簡體   English   中英

如何在 where 子句 sql 中使用具有多個值的變量作為參數

[英]How to use a variable with multiple values as a parameter in the where clause sql

我正在嘗試創建一個可以處理多值參數但不能使其工作的“where 子句”。

CREATE TABLE [dbo].[Product]
(
    [ProductKey] [int] IDENTITY(1,1) NOT NULL,
    [Productnr] [nvarchar](25) NULL,
    [Color] [nvarchar](15) NOT NULL,
) 

INSERT INTO [dbo].[Product] ([Productnr], [Color])  
VALUES ('45678', 'Red'),
       ('98765', 'Blue'),
       ('46547', 'Black')

使用上面的示例表,我希望創建一個查詢,使用如下變量參數過濾 colors 紅色和藍色的行:

DECLARE @Color varchar(50) = 'Red,Blue';

SELECT *
FROM [dbo].[Product] 
WHERE [Color] IN (@Color)

我嘗試使用STRING_SPLIT function 但沒有讓它工作(結果 output 為空)

DECLARE @Color varchar(50) = 'Red,Blue';

SELECT *
FROM [dbo].[Product] 
WHERE EXISTS (SELECT * FROM STRING_SPLIT(@Color, ',') 
              WHERE [Color] IN (SELECT @Color 
                                FROM STRING_SPLIT(@Color, ',')))

如果從變量中刪除藍色並且只傳遞“紅色”它可以創建但當我嘗試傳遞多個值時不會。

您可以使用IN

SELECT p.*
FROM [dbo].[Product] p 
WHERE p.Color IN (SELECT s.value FROM STRING_SPLIT(@Color, ',') s)

在存在條件下僅更改了某些部分:

DECLARE @Color varchar(50) = 'Red,Blue';

SELECT *
FROM [dbo].[Product] 
WHERE EXISTS (SELECT * FROM STRING_SPLIT(@Color, ',') A 
              WHERE a.[value] = product.color)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM