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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)