如果我有一个变量
declare @tag nvarchar(max) = '1570,20342'
我想选择一个数据,她的字段“标签”值是
“1443,1570,3245,20342”
此值为字符串,由“1570”和“20342”组合,
如何选择该数据?
答案 0 :(得分:0)
使用子查询获取存储在变量中的字符串:
示例:
DECLARE @tag NVARCHAR(MAX)
SET @tag = '1570'
SELECT *
FROM TABLE
WHERE COLUMN LIKE (SELECT '%'+@tag+'%')
如果不首先拆分它们,您将无法在列中搜索这两个值。您可以使用两个变量来完成此操作,例如:
DECLARE @tag1 NVARCHAR(MAX)
SET @tag1 = '1570'
DECLARE @tag2 NVARCHAR(MAX)
SET @tag2 = '20342'
SELECT *
FROM TABLE
WHERE COLUMN LIKE (SELECT '%'+@tag1+'%')
OR COLUMN LIKE (SELECT '%'+@tag2+'%')
虽然这是针对这种情况的快速解决方法,但它不能很好地扩展,修复此问题的唯一方法是规范化表,停止在一行上使用逗号分隔的更多值,而是每行使用一个值。