☆用心生活☆-wonder-{改变自己才能让自己过上不一样的日子。为自己加油!}

MSSQL之IN多值传参查询

因为MSSQL中的IN查询是多值查询,也许你的一个参数会包含有很多值,但是在MSSQL解析的时候只会当做一个字符串来处理,不是处理多个字符串,IN多值处理其实就是多字符串值的处理。

所以为了能达到想要的IN多值参数化查询,就必须进行动态SQL语句的拼接,因为动态SQL其实就是很多个字符串组成的一个动态SQL语句,只是最后执行的时候的必须是用execute sp_executesql @sql这样执行然后得出你想要的结果。首先使用的是Northwind数据库进行演示的,代码如下:

DECLARE @preName nvarchar(4000)
SET @preName='@Davolio@,@Fuller@,@Leverling@'

declare @lastName nvarchar(4000)

set @lastName=replace(@preName,'@','''')
declare @sql nvarchar(2000)
set @sql=N'SELECT *FROM Employees where lastName IN ('+@lastName+')'
execute sp_executesql @sql

动态SQL语句如上。

你也可以进行编写存储过程。

CREATE PROC lOOKINFO(@prename nvarchar(1000))

as

.....

 

 

 

 

posted @ 2010-10-14 11:54  ☆用心生活☆  阅读(4729)  评论(0编辑  收藏  举报
本作者写的任何文章均属原创,若要转载,请注明出处;若
进行与文章有关的商业行为,本作者保留拥有诉诸法律追究
侵权的任何行为。文章只代表本人某一学习时间段内对某一
技术的说明,不代表具有绝对的正确性,若要学习,请与各
位高手编程人员讨论学习。本文章也不代表自己某一时期某
一公司的任何专著和机密文件。仅仅提供自我学习和他人学
习的文章参考,以及自我知识记录。wanzegui325#163.com