输入参数包含逗号分隔的字符串。
DECLARE @FacilityCode VARCHAR(MAX) = 'a,b,c,d,e,f,g,h,i'
ID |值
1 |一个
2 | b
3 | c
4 | d
我需要使用逗号分隔的字符串查询匹配数据。
如果
@FacilityCode = 'a,b'
表格应返回a
,b
作为行。如果
@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
答案 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]
)