如何在 IN where 子句中传递逗号分隔的值

  • 本文关键字:分隔 IN where 子句 proc
  • 更新时间 :
  • 英文 :


我想问一下如何将'30','31','32'传递给SQL where in 子句

例如

执行 SQL 声明 ABCD 光标,用于从order_type中的事务中选择寄售(:d est)

其中 dest 将保存值"30"、"31"、"32"。

我已经尝试了上面的例子,但它不起作用 SQL 没有返回任何结果。

没有简单的方法。在 seperator(,) 上拆分数据,在 while 循环中插入到表中。然后"IN(从临时表中选择"column_name")"。现在拆分并插入临时表是一件棘手的事情。

DECLARE @StringToSeperate VARCHAR(10)
SELECT @StringToSeperate = '1,2,5'
--SELECT @StringToSeperate IDs INTO #Test

CREATE TABLE #valus (ID int) 
DECLARE @CommaSeperatedValue VARCHAR(255) = ''
DECLARE @Position INT = LEN(@StringToSeperate)
--Add Each Value
WHILE CHARINDEX(',', @StringToSeperate) > 0
BEGIN
    SELECT @Position  = CHARINDEX(',', @StringToSeperate)  
    SELECT @CommaSeperatedValue = SUBSTRING(@StringToSeperate, 1, @Position-1)
    INSERT INTO #valus 
    SELECT @CommaSeperatedValue
    SELECT @StringToSeperate = SUBSTRING(@StringToSeperate, @Position+1, LEN(@StringToSeperate)-@Position)
END
--Add Last Value
IF (LEN(LTRIM(RTRIM(@StringToSeperate)))>0)
BEGIN
    INSERT INTO #valus
    SELECT SUBSTRING(@StringToSeperate, 1, @Position)
END
SELECT ID FROM #valus

相关内容

  • 没有找到相关文章

最新更新