[英]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.