【发布时间】:2016-10-14 17:13:18
【问题描述】:
我有一个逗号分隔值的 varchar。我正在尝试检查一个值是否在逗号分隔的列表中。
例如,如果 varchar 是 'AAA, BBB, CCC',检查 'BBB' 应该返回 true。
我正在使用 STRING_SPLIT 来解析逗号分隔的列表,但匹配只在我期望的第一个值上起作用:
DECLARE @List VARCHAR(100) = 'AAA, BBB, CCC'
SELECT
CASE
WHEN 'AAA' IN (SELECT VALUE FROM STRING_SPLIT(@List, ',')) THEN 'true'
ELSE 'false'
END
--selects true
SELECT
CASE
WHEN 'BBB' IN (SELECT VALUE FROM STRING_SPLIT(@List, ',')) THEN 'true'
ELSE 'false'
END
--selects false
从Screenshot 可以看出,STRING_SPLIT 正在按预期拆分所有值。为什么 IN 只检查第一个?
【问题讨论】:
标签: sql-server split sql-server-2016