日期:2014-05-19  浏览次数:20461 次

急:如何写查询语句in后面的参数形式
我有多个值要查询,就像要查这个人既可能在北京,也可能在南京,还可能在其他地方。这些地方通过一个字符串传入存储过程。我要怎么写呢?

DECLARE   @ParamPlace   NVARCHAR(1000)

Set   @ParamPlace   =   '( ' '北京 ' '   or   ' '北京 ' ') '

SELECT   *   FROM   STUDENT   WHERE   [PLACE]   in   @ParamPlace

报错:
Server:   Msg   170,   Level   15,   State   1,   Line   3
Line   3:   Incorrect   syntax   near   '@ParamPlace '.



------解决方案--------------------
SELECT * FROM STUDENT WHERE [PLACE] in @ParamPlace

-》
exec( 'SELECT * FROM STUDENT WHERE [PLACE] in '+@ParamPlace)
------解决方案--------------------
DECLARE @ParamPlace NVARCHAR(1000)

Set @ParamPlace = '北京,南京 '

SELECT * FROM STUDENT WHERE charindex( ', '+[PLACE]+ ', ', ', '+@ParamPlace+ ', ')> 0
------解决方案--------------------
直接查就可以.
------解决方案--------------------
---try--
DECLARE @ParamPlace NVARCHAR(1000),@str Nvarchar(1000)

Set @ParamPlace = '( ' '北京 ' ', ' '南京 ' ') '

set @str = 'SELECT * FROM STUDENT WHERE [PLACE] in '+@ParamPlace

exec(@str)