关于SQL存储过程的问题?where中条件语句的累加

2025-03-24 06:30:02
推荐回答(3个)
回答1:

你的问题是LIKE后面的百分号怎么跟你的变量集合起来对吧?
如果在你的存储过程中不会出现对传入参数的操作,那么,吧传入的参数改为NVARCHAR型,让传进来的值本身就带有%
如果像你后面注释掉的一样,要对这些参数进行操作(判断等),就需要把非字符串类型的数据线变成字符串,在连接就行了,用CONVERT方法
如 WHERE employeeId LIKE '%'+CONVERT(NVARCHAR,@employeeId)+'%'

回答2:

把思路放开一下,你这个存储过程其实所需要做得事情就是根据你的逻辑判断来组织后面的查询语句,你可以的存储过程可以这样,把你组织条件的语句放在程序中,查询的时候只传给存储过程一个组织好的条件进行查询就可以了,这样你的 if else判断就无需放在存储过程中了ALTER PROCEDURE [dbo].[kaoqinView_GetList]
@condition nvarchar(4000),
ASdeclare @sql nvarchar(4000)set @sql='
SELECT
[kaoqinId],
[name],
[employeeId],
[year],
[month],
[overHour],
[chiDao],
[zaoTui],
[kuangGong]
FROM [SMS_DB].[dbo].[kaoqinView] where 1=1 ' + @conditionexec(@sql) go 当然如果你一定要把 if else 判断放在存储过程中也可以,原理差不多,先通过判断拼接出查询条件,然后再将查询语句与查询条件拼接起来 通过exec来进行执行 就可以了

回答3:

sql code: create procedure test
@NAME NVARCHAR
AS
exec('SELECT fields FROM TABLE WHERE NAME LIKE ''%' + @NAME +'%''')