在用户输入的参数中传递多个字符串值
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 TABLE
在 Code int
:
之后的示例中有一个额外的逗号
CREATE TABLE dbo.#Cars (
Car_id int NOT NULL,
Color varchar(10),
Brand varchar(10),
Code int
)
我正在创建一个 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 TABLE
在 Code int
:
CREATE TABLE dbo.#Cars (
Car_id int NOT NULL,
Color varchar(10),
Brand varchar(10),
Code int
)