MSSQL - WHERE类似于字符串的一部分

时间:2014-01-09 06:23:54

标签: sql-server

如果我有一个变量

declare @tag nvarchar(max) = '1570,20342'

我想选择一个数据,她的字段“标签”值是

  

“1443,1570,3245,20342”

此值为字符串,由“1570”和“20342”组合,

如何选择该数据?

1 个答案:

答案 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+'%')

虽然这是针对这种情况的快速解决方法,但它不能很好地扩展,修复此问题的唯一方法是规范化表,停止在一行上使用逗号分隔的更多值,而是每行使用一个值。