差异与LOCATE()
之间LOCATE()
FIND_IN_SET()
功能
使用的最佳方法,区别假设我们需要1到从LOCATE()
返回,如果整3在该组1,2,3,4,5,..
下面的MySQL命令可以写成:
mysql> SELECT IF(LOCATE(3,'1,2,3,4,5,6,7,8,9')>0,1,0);
+-----------------------------------------+
| IF(LOCATE(3,'1,2,3,4,5,6,7,8,9')>0,1,0) |
+-----------------------------------------+
| 1 |
+-----------------------------------------+
1 row in set (0.06 sec)
上述命令正确地工作,因为该集合包含3号,但如果我们编写以下命令,看看发生了什么事
mysql> SELECT IF(LOCATE(3,'11,12,13,14,15')>0,1,0);
+--------------------------------------+
| IF(LOCATE(3,'11,12,13,14,15')>0,1,0) |
+--------------------------------------+
| 1 |
+--------------------------------------+
1 row in set (0.02 sec)
了上述3个不存在作为给定一个数三(3),虽然LOCATE()
返回1 为了避免这种情况类型的情况下可以使用FIND_IN_SET()
函数。这里是下面的例子:
mysql> SELECT IF(FIND_IN_SET(3,'11,12,13,4,5,6,7,8,9')>0,1,0);
+-------------------------------------------------+
| IF(FIND_IN_SET(3,'11,12,13,4,5,6,7,8,9')>0,1,0) |
+-------------------------------------------------+
| 0 |
+-------------------------------------------------+
1 row in set (0.05 sec)
所以,LOCATE()函数非常适合字符串,但没有那么适合整数。
例子,信贷和一些更多的信息,你可以找到在你的例子FIND_IN_SET
回到0
here
所以因为在给定的没有3
,但LOCATE()
返回1
它处理给定的设置为一个字符串,但不逗号分隔值,并且3
存在于数字13