我有一个关于 MSSQL WHERE IN 子句的问题

问题描述 投票:0回答:1

我想从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 mysql sql-server oracle oracle-sqldeveloper
1个回答
0
投票

鉴于您使用的是 SQL Server,它没有最广泛的字符串函数,您可以使用这个

LIKE
技巧:

SET @INP = '11111111,202408050001'

SELECT *
FROM EX_TABLE
WHERE ',' + @INP + ',' LIKE '%,' + EX_COLUMN + ',%';
© www.soinside.com 2019 - 2024. All rights reserved.