我有以下代码允许在IN子句中使用变量:
DECLARE @Ids varchar(50);
SET @Ids = '24,25';
SELECT *
FROM table
WHERE ','+@Ids+',' LIKE '%,'+CONVERT(VARCHAR(50),id_field)+',%';
由于@Ids是一个可选字段,可以为null,我将如何修改代码使其包含
(@Ids IS NULL OR id_field = @Ids)
答案 0 :(得分:1)
您已经拥有了几乎所有的内容(添加了括号以提高可读性)
salaryincrease = determine_increase(salary1, salary2)
bonusincrease = determine_increase(bonus1, bonus2)
benefitsincrease = determine_increase(benefits1, benefits2)
请注意,请确实意识到,这样的查询会绕过WHERE (@Ids IS NULL) OR (','+@Ids+',' LIKE '%,'+CONVERT(VARCHAR(50),id_field)+',%')
上可能存在的任何索引,并将进行表扫描以查找匹配项。