如何用变量做为WHERE的过滤条件?
前台程序传回一个变量 @var varchar(100)
格式为 A.,B.,C.,X.,Y. ....
比如: @var = 'YZ.,PB.,YH.' (长短不一)
字符中的这个变量我是要传到SQL的 where 语句中,用于对条件的过滤。
比如:
SQL
--创建表#T_A
create table #T_A (TYPE VARCHAR(100))
INSERT #T_A VALUES ('YZ.')
INSERT #T_A VALUES ('PB.')
INSERT #T_A VALUES ('JGB.')
INSERT #T_A VALUES ('WK.')
INSERT #T_A VALUES ('DL.')
INSERT #T_A VALUES ('PFB.')
declare @var varchar(100)
set @var = 'YZ.,PB.,YH.' --前台传过来的变量
--给逗号前后加上'字符
SET @var = (SELECT '''' + REPLACE(@var, ',', ''',''') + '''')
--查询,但查不到记录
SELECT * FROM #T_A WHERE TYPE IN (@var)
----------------------------
--想要实现的效果
SELECT * FROM #T_A WHERE TYPE IN ('YZ.','PB.','YH.')
create table #T_A (TYPE VARCHAR(100))
INSERT #T_A VALUES ('YZ.')
INSERT #T_A VALUES ('PB.')
INSERT #T_A VALUES ('JGB.')
INSERT #T_A VALUES ('WK.')
INSERT #T_A VALUES ('DL.')
INSERT #T_A VALUES ('PFB.')
declare @var varchar(100),@sql VARCHAR(MAX)
set @var = 'YZ.,PB.,YH.' --前台传过来的变量
--给逗号前后加上'字符
SET @var = (SELECT '''' + REPLACE(@var, ',', ''',''') + '''')
SET @sql='SELECT * FROM #T_A WHERE TYPE IN ('+@var+')'
EXEC(@sql)