首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

怎么用变量做为WHERE的过滤条件

2013-08-11 
如何用变量做为WHERE的过滤条件?前台程序传回一个变量 @var varchar(100)格式为 A.,B.,C.,X.,Y. ....比如:

如何用变量做为WHERE的过滤条件?
前台程序传回一个变量 @var varchar(100)

格式为 A.,B.,C.,X.,Y. ....

比如: @var = 'YZ.,PB.,YH.' (长短不一)

字符中的这个变量我是要传到SQL的 where 语句中,用于对条件的过滤。

比如:


--创建表#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.')
SQL
[解决办法]

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)

热点排行