MySQL INSTR()和FIND_IN_SET()函数有什么区别?
我们知道,这两个函数都用于在它们提供的参数中搜索字符串,但它们之间存在一些显著的区别,如下所示。
- FIND_IN_SET()函数使用字符串列表,它本身是一个包含用逗号分隔的子字符串的字符串。而INSTR()函数包含一个字符串,如果存在,则会查找子字符串的第一次出现的位置。
- 对于整数而言,FIND_IN_SET()比INSTR()函数更合适。可以通过以下示例来理解。
阅读更多:MySQL 教程
示例
mysql> Select IF(INSTR('10,11,12,13',2) > 0,1,0) As Result;
+--------+
| Result |
+--------+
| 1 |
+--------+
1 row in set (0.05 sec)
mysql> Select IF(FIND_IN_SET(2,'10,11,12,13') > 0,1,0)As Result;
+--------+
| Result |
+--------+
| 0 |
+--------+
1 row in set (0.00 sec)
从上面的示例的结果集中,我们可以看到,即使将2作为字符串不在参数中,INSTR()函数仍然返回1。但FIND_IN_SET()函数返回正确答案0。
极客教程