日期:2014-05-17  浏览次数:20859 次

sql读取文本字段(以逗号隔开整数的字符串)包含某个整数的所有记录,如何写sql语句?
遇到一个问题.
一个用户群的表(Group)其中有一个id的字段是用来存储用户ID的(以逗号隔开),如:
_________________________________________________
                          id
-------------------------------------------------
                  1,4,56,78,156
                  1,21,5,78,22,467
                  12,43,567,342,125,78,33,45
                  67,33,245,1,6
-------------------------------------------------
如果搜索为1的数值,要显示所有为1的值,那么就要读出表中id里字符串逗号之间的数字含有1且必须是1的所有记录。那么该如何写这个sql语句?
当然把记录全部读出来,再用split来分割字符串,一个个地来对比也行得通,但是效率却是很低的,如果直接在查询中就解决当然就最好了。
还请大家赐教。。。



------解决方案--------------------
最好对数据进行一下改造,改成
,1,4,56,78,156,
,1,21,5,78,22,467,
,12,43,567,342,125,78,33,45,
,67,33,245,1,6,
在查询时,where charindex( ',1, ', id, 1)> 0
可得出包含有1的结果。
------解决方案--------------------
同意..比如区分1和21中的1,只要在前后都用特殊符号隔开如:,1,21,111,
like ",1, "

------解决方案--------------------
同意楼上对数据的改造,然后用 ... where ... and id like '%,1,% '即可
------解决方案--------------------
where ( ', '+field) like '%,1,% '
------解决方案--------------------
like '%1,% ' or like '%,1,% '