我想问一下如何通过' 30' 31'' 32'到SQL WHERE IN子句例如
EXEC SQL DECLARE abcd CURSOR for SELECT寄售FROM Transaction WHERE order_type IN(:dest)
其中dest将保留值' 30' 31'' 32'
。我已经尝试过上面的示例,但它不起作用SQL没有返回任何结果。
答案 0 :(得分:0)
没有简单的方法。分隔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