变量的IN子句

时间:2018-09-11 18:05:52

标签: sql sql-server tsql

我有以下代码允许在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)

1 个答案:

答案 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)+',%') 上可能存在的任何索引,并将进行表扫描以查找匹配项。