(mysql)怎样判断一个数字变量是否包含在表的一个字段中,并列出包含该变量的表中所有数据.该如何处理

WBOY
풀어 주다: 2016-06-13 13:49:20
원래의
2310명이 탐색했습니다.

(mysql)怎样判断一个数字变量是否包含在表的一个字段中,并列出包含该变量的表中所有数据.
如表table 包含以下字段
id csite ....
1 1,2,13 .... 
2 2,3,4 ....
3 1,4,5 ....
4 2,5,23 ....
5 1,3,8 ....

假设取得一个数字变量3,怎样列出包含数字3的所有数据行

使用select id,csite from table where csite like '%3%' or csite like '%3,%' or csite like '%,3,%' or csite like '%,3%'

这样行不通,会把13,23的也查出来

想要的结果是:
id csite ....
2 2,3,4 ....
5 1,3,8 ....

查过一些资料,用这个charindex(3,csite)>0试了不管用,该怎么办??

不要太复杂sql语句和存储过程

谢谢!!!!!



------解决方案--------------------
可以使用MySQL自己的函数FIND_IN_SET

FIND_IN_SET(str,strlist) 
Returns a value 如果字符串 str 在由 N 个子串组成的列表 strlist 中,返回一个 1 到 N 的值。一个字符串列表是由通过字符 “,” 分隔的多个子串组成。如果第一个参数是一个常数字符串,并且第二个参数是一个 SET 列类型,FIND_IN_SET() 函数将被优化为使用位运算!如果 str 在不 strlist 中或者如果 strlist 是一个空串,返回值为 0。如果任何一个参数为 NULL,返回值也是 NULL。如果第一个参数包含一个 “,”,这个函数将完全不能工作: 
mysql> SELECT FIND_IN_SET('b','a,b,c,d');
-> 2

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿