SQL - 使用IN子句的变量

alu*_*umb 3 sql sql-server

我希望做以下事情:

declare @FrameNumber nvarchar(20)
set @FrameNumber = '(p1, p2)'

select from myTable where c1 in @FrameNumber
Run Code Online (Sandbox Code Playgroud)

这个的正确语法是什么?

(注意:我需要将@FrameNumber的值作为参数传递给存储过程...所以我必须至少使用字符串"p1,p2")

将prefure和回答SQL 7兼容,但SQL 2005就足够了.

Qua*_*noi 9

DECLARE @FrameNumbers TABLE (code NVARCHAR(20) PRIMARY KEY)

INSERT
INTO   @framenumbers
VALUES ('p1')

INSERT
INTO   @framenumbers
VALUES ('p2')

SELECT  *
FROM    mytable
WHERE   c1 IN
        (
        SELECT  code
        FROM    @framenumbers
        )
Run Code Online (Sandbox Code Playgroud)