关于查询的一个问题 某表记录是这样的id title cid100 张三 2,3101 李四 3,4102 王五 12,13如果搜索,条件是要查cid字段=2的记录应该怎么写?sql语句里的like应该不严谨,可能会把100和102这两条记录都查出来 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SELECT * FROM table WHERE FIND_IN_SET('2',cid); mysql> select find_in_set(2, "2,3,4");+-------------------------+| find_in_set(2, "2,3,4") |+-------------------------+| 1 |+-------------------------+1 row in set (0.00 sec)mysql> select find_in_set(2, "52,3,4");+--------------------------+| find_in_set(2, "52,3,4") |+--------------------------+| 0 |+--------------------------+1 row in set (0.00 sec)mysql> select find_in_set(2, "2,3,4"); +-------------------------+| find_in_set(2, "2,3,4") |+-------------------------+| 1 |+-------------------------+1 row in set (0.00 sec) 给你贴说明:FIND_IN_SET(str,strlist)如果字符串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 是否合理其实得看功能需求,比如要实现文章tag功能的时候,这样设计还是需要的,每篇文章有不固定数量的标签,把标签id用逗号分隔组成字符串存储,和标签表关联起来,方便了标签的查询和管理 请教一个分表优化方案 mysql 修改字段问题 PHP怎么这样读取数据库? 我想设置discuz用户每发帖一次就奖励5个积分 如何清除cookie 关于PHP不同文件的变量作用域问题 高手帮帮忙啊,怎样设置分配用户操作权限?谢谢 请高手解释:php中的引用 php配置出错:显示询问是否要保存文件的对话框 怪现象,请教高手 求助:PHP调用数据库数据输出结果总重复一次。 window2003服务器下配置getcwd()函数的取值是错误的?(着急)
+-------------------------+
| find_in_set(2, "2,3,4") |
+-------------------------+
| 1 |
+-------------------------+
1 row in set (0.00 sec)mysql> select find_in_set(2, "52,3,4");
+--------------------------+
| find_in_set(2, "52,3,4") |
+--------------------------+
| 0 |
+--------------------------+
1 row in set (0.00 sec)mysql> select find_in_set(2, "2,3,4");
+-------------------------+
| find_in_set(2, "2,3,4") |
+-------------------------+
| 1 |
+-------------------------+
1 row in set (0.00 sec)
如果字符串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