SQL IN条件中的CASE语句

时间:2019-05-24 10:02:31

标签: sql-server tsql split

输入参数包含逗号分隔的字符串。

DECLARE @FacilityCode VARCHAR(MAX) = 'a,b,c,d,e,f,g,h,i'

ID |值

1 |一个

2 | b

3 | c

4 | d

我需要使用逗号分隔的字符串查询匹配数据。

  

如果@FacilityCode = 'a,b'   表格应返回ab作为行。

     

如果@FacilityCode = ''   表格应返回所有行

我正在使用以下查询。它显示了语法错误。感谢您的进步。

SELECT Value 
FROM Table
WHERE [GROUP] IN (CASE WHEN COUNT(SELECT Value FROM STRING_SPLIT(@FacilityCode,','))) = 0 
THEN '%%' ELSE (SELECT Value FROM STRING_SPLIT(@FacilityCode,',')) END

1 个答案:

答案 0 :(得分:0)

您只需将OR @FacilityCode = ''添加到where子句:

SELECT value
FROM t
WHERE @FacilityCode = '' OR EXISTS (
    SELECT 1
    FROM STRING_SPLIT(@FacilityCode, ',') AS x
    WHERE x.[value] = t.[group]
)