首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

新手,求教个关于动态条件拼接的有关问题

2012-12-16 
新手,求教个关于动态条件拼接的问题。修改别人的存储过程,其中有一个存储过程,在程序里拼接好的查询条件作

新手,求教个关于动态条件拼接的问题。
修改别人的存储过程,其中有一个存储过程,在程序里拼接好的查询条件作为参数传给存储过程,存储过程中判断这个条件是否为空,如果不为空,加上这个条件,如果为空,什么也不做。

类似这样:
传进来个参。。@Query NVARCHAR(MAX)=null
这个参可能是name like '%zhang%' 或者 age=23 and sex=0 等等这种格式的,程序拼过来的。

然后存储过程中原来是用字符串拼接的sql语句,最后判断参数然后拼接的。
比如:


@sql=N'select * from table1 where id=xx ' + isnull('and ' + @Query,'')'


现在我不想要字符串拼接的方法,就是正常执行查询然后就不知道怎么带上这个条件了。。
不知道有没有表达清楚
[最优解释]
where col=case when @变量 is null or @变量='' then 1 else @变量 end and id=xx

[其他解释]
条件作为参数,必须用动态执行。
[其他解释]
引用:
引用:没有其他办法了吗?

如果说是参数表示的是表的字段名字  智能动态了  如果说是参数只是字段的值  通过是否为空来确定要不要这个条件  可以用我楼上的方法
小李子正解~
[其他解释]

string strWhere = "";
string sql = "select * from table1 where 1=1";
if(string.isnullorempty(name ))
{
    sql += "and name like'%" + strWhere + "%'";
}


[其他解释]
引用:
SQL code1where col=case when @变量 is null or @变量='' then 1 else @变量 end and id=xx


错了

1
where col=case when @变量 is null or @变量='' then col else @变量 end and id=xx


这样
[其他解释]

没有其他办法了吗?
[其他解释]
引用:
没有其他办法了吗?


如果说是参数表示的是表的字段名字  智能动态了  如果说是参数只是字段的值  通过是否为空来确定要不要这个条件  可以用我楼上的方法

热点排行
Bad Request.