在用户输入的参数中传递多个字符串值

Passing multiple string values in a user entered parameter

我正在创建一个 SSRS,但在传递用户输入的具有多个字符串值的参数时遇到了问题。

我在处理下面示例中的第 3 个 SELECT 时遇到了问题。 如何转义单引号并在两个参数中传递多个值?

谢谢!!

CREATE TABLE dbo.#Cars (   
   Car_id int NOT NULL, 
   Color varchar(10), 
   Brand varchar(10), 
   Code int, 
) 

INSERT INTO dbo.#Cars VALUES(1, 'RED',   'Nissan',     555);
INSERT INTO dbo.#Cars VALUES(2, 'RED',   'BMW',        555);
INSERT INTO dbo.#Cars VALUES(3, 'BLUE',  'Toyota',     555);
INSERT INTO dbo.#Cars VALUES(4, 'GREEN', 'Nissan',     555);
INSERT INTO dbo.#Cars VALUES(5, 'BLACK', 'Alfa Romeo', 555);

SELECT * FROM dbo.#Cars;
SELECT * FROM dbo.#Cars WHERE Color IN ('RED', 'BLUE');

DECLARE @PARAM_COLOR VARCHAR(MAX);
DECLARE @PARAM_BRAND VARCHAR(MAX);
SET @PARAM_COLOR =  '''RED'',''BLUE''';
SET @PARAM_BRAND = '''Nissan'',''BMW''';
SELECT * FROM dbo.#Cars WHERE Color IN (@PARAM_COLOR) AND Brand IN (@PARAM_BRAND);

DROP TABLE dbo.[#Cars]

您可以像这样使用 table variable

DECLARE @PARAM_COLOR TABLE (COLOR VARCHAR(100));
DECLARE @PARAM_BRAND TABLE (BRAND VARCHAR(100));

INSERT INTO @PARAM_COLOR
VALUES ('RED')
    ,('BLUE')
    ,('GREEN')
    ,('BLACK');

INSERT INTO @PARAM_BRAND
VALUES ('Nissan')
    ,('BMW')
    ,('Toyota');

SELECT *
FROM dbo.#Cars
WHERE Color IN (
        SELECT COLOR
        FROM @PARAM_COLOR
        )
    AND Brand IN (
        SELECT BRAND
        FROM @PARAM_BRAND
        );

旁注:您的 CREATE TABLECode int:

之后的示例中有一个额外的逗号
CREATE TABLE dbo.#Cars (   
   Car_id int NOT NULL, 
   Color varchar(10), 
   Brand varchar(10), 
   Code int 
)