首页 > 解决方案 > 在 SQL Server 中使用逗号分隔值的 Like 运算符

问题描述

例如,这是我原来的表

SELECT id, testName FROM tblTest1

在此处输入图像描述

每当我的逗号分隔值以正确的方式出现时,我就会根据我的原始表格得到结果。

见下图:

DECLARE @Test VARCHAR(100)
SET @Test='General, Narcotic'

SELECT id, testName 
FROM tblTest1 a 
WHERE ISNULL(a.testName, '') LIKE (CASE WHEN isnull(@Test,'') = '' THEN isnull(a.testName,'') 
                                        ELSE '%'+@Test+'%' END)               

在此处输入图像描述

但是当我改变逗号分隔值的原始位置时,我没有得到任何输出。

见下图:

DECLARE @Test VARCHAR(100)
SET @Test='Narcotic,General'


SELECT id, testName FROM tblTest1 a 
WHERE isnull(a.testName,'') Like (CASE WHEN isnull(@Test,'') = '' THEN isnull(a.testName,'') 
ELSE '%'+@Test+'%' END)

在此处输入图像描述

所以,我想要查询,只要我的逗号分隔字符串在该行中,我想选择所有行(包括不基于原始表的更改逗号分隔值,@paramer然后选择所有行)

标签: sqlsql-serversql-server-2005

解决方案


你可以尝试IS NULLOR条件

SELECT id, testName
FROM tblTest1 a
WHERE (@test IS NULL OR a.testName LIKE '%'+@test+'%')

推荐阅读