日期:2014-05-18  浏览次数:20521 次

急sql server in 查询问题
where 8 in (caid)

群众caid是数据库的字段 里面的数据是类似(1,2,4,8,5)是string型(我这caid是类别的多选保存类别的id)

现在问题是where 8 in (caid)查询不出数据来,但库里面有是8跟前面的8对应
不知道为什么

------解决方案--------------------
外面的8是整形数据,而里面的是字符,对吧?类型不对,转换以后当然不匹配啊。找不到匹配的,当然没有返回结果。
------解决方案--------------------
SQL code

where charindex('8',caid)>0
或者
where caid like '%8%'

------解决方案--------------------
你传入的string类型被当成一个字符串了,in里面只相当于有一个string类型的值,而不是数字的集合。这样要实现可以用CHARINDEX('8',string) > 0 来实现
------解决方案--------------------
where charindex('8',caid) > 0
------解决方案--------------------
where charindex(',8,',','+caid+',') > 0
------解决方案--------------------
探讨

SQL code

where charindex('8',caid)>0
或者
where caid like '%8%'

------解决方案--------------------
探讨

where charindex('8','1,6,8,3') > 0---------这样可以
where charindex('8',caid)>0----------------这样不可以

为什么啊?