有一存储过程 穿两个参数,第二个参数是放在where里的ALTER PROCEDURE [dbo].[P]
@var1 varchar(32)='',
@var2 varchar(1024)=''
AS
BEGIN
select count(*) from Q
WHERE CD LIKE left(@var1,2)+'%00' AND IS IN(-1, 2) + @var2
END@var2是可以不填写的,填写传入的时候是and 字段=值,IS类型为varchar,但是放在IS后面报错,如果这样放置
WHERE CD LIKE left(@var1,2)+'%00' + @var2 AND IS IN(-1, 2)
这样是可以 但是查出来是0
@var1 varchar(32)='',
@var2 varchar(1024)=''
AS
BEGIN
select count(*) from Q
WHERE CD LIKE left(@var1,2)+'%00' AND IS IN(-1, 2) + @var2
END@var2是可以不填写的,填写传入的时候是and 字段=值,IS类型为varchar,但是放在IS后面报错,如果这样放置
WHERE CD LIKE left(@var1,2)+'%00' + @var2 AND IS IN(-1, 2)
这样是可以 但是查出来是0
WHERE CD LIKE left(@var1,2)+'%00' AND [IS] IN('-1'+@var2,'2'+@var2)
IS 是一个字段 @var2也是一个字段不能加在哪个位置
@var2是传进来可能是 and 字段=值
另外建议LZ字段名字别起什么IS、CD这种让人容易误解的名字!尤其是IS!
ALTER PROCEDURE [dbo].[P]
@var1 varchar(32)='',
@var2 varchar(1024)=''
AS
BEGIN
declare @sql varchar(8000)
set @sql = 'select count(*) from Q
WHERE CD LIKE left('''+@var1+''',2)+''%00'' AND IS IN(-1, 2)' + @var2
exec(@sql)
END