用戶從下拉列表中選擇各種單詞,並將這些值添加到以逗號分隔的字符串中。當將字符串傳遞給存儲過程時,我希望它可以存在該表單的select * from
。從列表中選擇* where column =(逗號分隔字符串中的任何值)
傳遞到存儲過程表
id----word
1-----cat
2-----dog
3-----mouse
4-----dog
串cat, dog
所以返回列1,2和4
有沒有在SQL Server這樣做的呢?
用戶從下拉列表中選擇各種單詞,並將這些值添加到以逗號分隔的字符串中。當將字符串傳遞給存儲過程時,我希望它可以存在該表單的select * from
。從列表中選擇* where column =(逗號分隔字符串中的任何值)
傳遞到存儲過程表
id----word
1-----cat
2-----dog
3-----mouse
4-----dog
串cat, dog
所以返回列1,2和4
有沒有在SQL Server這樣做的呢?
你首先需要做一個函數SplitCSV:
CREATE FUNCTION [dbo].[SplitCSV] (@CSVString VARCHAR(8000), @Delimiter CHAR(1))
RETURNS @temptable TABLE (items VARCHAR(8000))
AS
BEGIN
DECLARE @pos INT;
DECLARE @slice VARCHAR(8000);
SELECT @pos = 1;
IF LEN(@CSVString) < 1 OR @CSVString IS NULL RETURN;
WHILE @pos!= 0
BEGIN
SET @pos = CHARINDEX(@Delimiter,@CSVString);
IF @pos != 0
SET @slice = LEFT(@CSVString, @pos - 1);
ELSE
SET @slice = @CSVString;
IF(LEN(@slice) > 0)
INSERT INTO @temptable(Items) VALUES (@slice);
SET @CSVString = RIGHT(@CSVString, LEN(@CSVString) - @pos);
IF LEN(@CSVString) = 0 BREAK;
END
RETURN
END
GO
那麼你可以使用它像:
SELECT *
FROM myTable
WHERE ID IN (
SELECT items FROM [dbo].[SplitCSV]('1,2,3,4,5', ',')
)
如果你想選擇除鼠標所有的動物,你可以使用NOT IN
SELECT * FROM
TABLE
WHERE Word Not IN('Mouse')
這樣就可以避免類型很多類型的動物
SELECT *
FROM Table
WHERE '%,' + Word + ',%' LIKE ',' + @your_csv_param + ','
參數和列的開始和結尾處的額外逗號是爲了防止搜索匹配012例如,與catfish
。
CREATE FUNCTION
ALTER FUNCTION [dbo].[fn_Split](@text varchar(8000), @delimiter varchar(20) = ' ')
RETURNS @Strings TABLE
(
position int IDENTITY PRIMARY KEY,
value varchar(8000)
)
AS
BEGIN
DECLARE @index int
SET @index = -1
WHILE (LEN(@text) > 0)
BEGIN
SET @index = CHARINDEX(@delimiter , @text)
IF (@index = 0) AND (LEN(@text) > 0)
BEGIN
INSERT INTO @Strings VALUES (@text)
BREAK
END
IF (@index > 1)
BEGIN
INSERT INTO @Strings VALUES (LEFT(@text, @index - 1))
SET @text = RIGHT(@text, (LEN(@text) - @index))
END
ELSE
SET @text = RIGHT(@text, (LEN(@text) - @index))
END
RETURN
END
----
select * from yourtable where column in (select value from fn_Split(@para1,',')
這將是更好地從用戶界面到傳遞數據數據庫服務器使用支持存儲多個不同值的數據類型,例如(理想情況下)表值參數或XML。 –
'貓,狗'這個列表是動態的嗎?或兩個值是固定的? (我的意思是數字) – Nithesh