SQL Server 2005中:两个或多个字符串连接成一个字符串,并传递作为参数
问题描述:
可能重复:
Parameterizing a SQL IN clause?SQL Server 2005中:两个或多个字符串连接成一个字符串,并传递作为参数
大家好,
我写一个SQL命令我的项目。我必须将一个字符串参数传递给游标。 但在那个参数我来连接许多字符串,像这样:
DECLARE @strParam VARCHAR(MAX)
SET @strParam = 'string1' + ',' + 'string2' + ',' ... etc
然后我想用这样的:
SELECT * FROM tblResult WHERE Field1 IN (@strParam)
,而不是下面的语句:
SELECT * FROM tblResult WHERE Field1 IN ('string1' + ',' + 'string2' + ',' ... etc)
所以我需要像上面设置的那样获取格式。 我该怎么做?
最好的问候, 红人
答
这将CSV分成表。
CREATE FUNCTION GetIDs(
@ids_csv nvarchar(255))
RETURNS @table_ids TABLE
(
ID INT,
PRIMARY KEY(ID)
) AS
BEGIN
DECLARE @app_id varchar(10)
DECLARE @pos int
SET @ids_csv = LTRIM(RTRIM(@ids_csv))+ ','
SET @pos = CHARINDEX(',', @ids_csv, 1)
IF REPLACE(@ids_csv, ',', '') <> ''
BEGIN
WHILE @pos > 0
BEGIN
SET @app_id = LTRIM(RTRIM(LEFT(@ids_csv, @pos - 1)))
INSERT INTO @table_ids(ID) VALUES(@app_id)
SET @ids_csv = RIGHT(@ids_csv, LEN(@ids_csv) - @pos)
SET @pos = CHARINDEX(',', @ids_csv, 1)
END
END
RETURN
END
然后,你可以这样做:
SELECT * FROM tblResult WHERE Field1 IN (SELECT * FROM GetIDs(@strParam))
+0
我意识到,上述拆分整数,而不是字符串。只需注意区别。 – Blazes 2011-04-20 08:07:56
+0
谢谢!我会很快尝试! – RedsDevils 2011-04-20 09:08:19
有什么不对,你已经代码?请进一步澄清你的问题。 – 2011-04-20 07:33:15
我想要做的是我想在这个语句中使用@strParam:SELECT * FROM tblResult WHERE Field1 IN(@strParam)但如果我们像这样运行@strParam不是这种格式('string1','string2') , 对?所以SELECT语句不会得到要求的结果。 – RedsDevils 2011-04-20 07:35:44