您的位置:程序门 -> ms-sql server -> 基础类



关于 in 问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


关于 in 问题
发表于:2007-08-25 14:32:14 楼主
declare   @idlist   varchar(2000)
set   @idlist= 'k001,k002,k003 '
select   *   from   tb   where   id   in   (replace( ' ' ' '+@idlist+ ' ' ' ', ', ', ' ' ', ' ' '))

表中有id为k001,k002,k003的记录,但用上面的select就是查不到,偶也知道是后面replace的问题,把它作为一个整体来查询。有那位可以修改一下或更好的思路吗?
当然也不推荐用EXEC

说的太多啦,先谢谢
发表于:2007-08-25 14:35:211楼 得分:0
declare   @idlist   varchar(2000)
set   @idlist= 'k001,k002,k003 '
select   *   from   tb   where   charindex(   ', '+id+ ', '   , ', '+@idlist+ ', ')> 0
发表于:2007-08-25 14:37:502楼 得分:0
用patindex   也行
发表于:2007-08-25 14:40:503楼 得分:0
可以使用like


declare   @idlist   varchar(2000)
set   @idlist= 'k001,k002,k003 '
select   *   from   tb   where   ', '   +   @idlist   +   ', '   like   '%, '   +   id   +   ',% '
发表于:2007-08-25 14:42:514楼 得分:0
--如果編碼是k001這樣固定四位的話
--可以
declare   @idlist   varchar(2000)
set   @idlist= 'k001,k002,k003 '
select   *   from   tb   where   @idlist   like   '% '   +   id   +   '% '

--或者
declare   @idlist   varchar(2000)
set   @idlist= 'k001,k002,k003 '
select   *   from   tb   where   charindex(id,   @idlist)   >   0
发表于:2007-08-25 15:13:015楼 得分:0
ok
发表于:2007-08-27 09:45:446楼 得分:0
归根到底是没有理解字符串和行集的区别


快速检索

最新资讯
热门点击