我想问一下如何将'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