0

ユーザーがドロップダウン リストからさまざまな単語を選択すると、これらの値がカンマ区切りの文字列に追加されます。文字列をストアド プロシージャに渡すときselect * from、その単語が存在するテーブルに文字列を渡します。

テーブル

id----word

1-----cat

2-----dog

3-----mouse

4-----dog

ストアド プロシージャに渡される文字列は、cat, dog列 1、2、および 4 を返します。

SQLサーバーでこれを行う方法はありますか?

4

5 に答える 5

4

使用IN:

SELECT *
FROM   your_table
WHERE  word IN ('cat', 'dog')
于 2013-07-08T09:44:39.490 に答える
2

最初に関数 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', ',')
)
于 2013-07-08T09:57:27.410 に答える
1
SELECT *
FROM Table
WHERE '%,' + Word + ',%' LIKE ',' + @your_csv_param + ','

パラメータと列の最初と最後にある余分なコンマは、たとえば、検索が一致catしないようにするためのものです。catfish

于 2013-07-08T09:57:19.270 に答える
0

mouse 以外のすべての動物を選択したい場合は、 NOT IN を使用できます

SELECT * FROM
TABLE
WHERE Word Not IN('Mouse')

したがって、多くの種類の動物を避けることができます

于 2013-07-08T09:50:30.663 に答える