我想从MSSQL中获取一个参数值,根据,(逗号)分隔数据,将其放在where子句中,然后搜索它。 ,(逗号)的数量是随机的。
如果我需要通过声明来使用变量,我需要根据,(逗号)的数量动态创建一个变量。有办法做到这一点吗? 我创建的过程的查询如下。该查询不起作用。
@IN_ORDER_NO VARCHAR(100)
DECLARE @SPLIT NVARCHAR(200)
SET @SPLIT = TRIM(CHAR(39)+REPLACE(@IN_ORDER_NO, ',', CHAR(39)+','+CHAR(39))+CHAR(39))
SELECT *
FROM EX_TABLE
WHERE EX_COLUMN IN (@SPLIT)
请告诉我怎么做。
SELECT TRIM(CHAR(39)+REPLACE('11111111,202408050001', ',', CHAR(39)+','+CHAR(39))+CHAR(39))
如果将此处的结果放入下面的查询中,您将获得一个值,但如果将其作为过程运行,则不会产生任何结果。 会不会是单引号的问题? CHAR(39) 是 '(单引号)代码
SELECT *
FROM EX_TABLE
WHERE EX_COLUMN IN (@SPLIT)
鉴于您使用的是 SQL Server,它没有最广泛的字符串函数,您可以使用这个
LIKE
技巧:
SET @INP = '11111111,202408050001'
SELECT *
FROM EX_TABLE
WHERE ',' + @INP + ',' LIKE '%,' + EX_COLUMN + ',%';