sql where 语句查询

sql where 语句查询,第1张

对于你举例的这个,直接用isnull(语文,''),空(NULL)为''。

where 辅助科目语文 like '%'+isnull(语文,'')+'%'这样就行。

这样如果语文是空的话,则拼起来的结果就是'%%',like '%%'可以起到1=1一样的效果了。

另外也可以使用CASE WHEN

where 辅助科目语文 like (case when isnull(语文,'') = '' then '%' else '%'+语文+'%' end)

case when 就可以实现你的if功能。

有那么麻烦么?使用 columnname like '%' + ISNULL(:参数,'') + '%'

这个肯定够使用了。只不过你的where条件要把所有的条件都拼进去。

isnull是空则为一个值的语法,不过是SQLSERVER的。ORACLE用NVL,MYSQL应该是IFNULL。如果是空,给两个单引号,然后和百分号一拼接,肯定是百分号,那么使用like,当然是字符型才可以,空的话条件就是恒等。

SELECT

表名=case

when

a.colorder=1

then

d.name

else

''

end,

字段序号=a.colorder,

字段名=a.name,

标识=case

when

COLUMNPROPERTY(

a.id,a.name,'IsIdentity')=1

then

'√'else

''

end,

主键=case

when

exists(SELECT

1

FROM

sysobjects

where

xtype='PK'

and

name

in

(

SELECT

name

FROM

sysindexes

WHERE

indid

in(

SELECT

indid

FROM

sysindexkeys

WHERE

id

=

a.id

AND

colid=a.colid

)))

then

'√'

else

''

end,

类型=b.name,

占用字节数=a.length,

长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'),

小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),

允许空=case

when

a.isnullable=1

then

'√'else

''

end,

默认值=isnull(e.text,'')

FROM

syscolumns

a

left

join

systypes

b

on

a.xtype=b.xusertype

inner

join

sysobjects

d

on

a.id=d.id

and

d.xtype='U'

and

d.name<>'dtproperties'

left

join

syscomments

e

on

a.cdefault=e.id

order

by

a.id,a.colorder


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9974062.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存