mysql中find_in_set()函数用法及自定义增强函数详解(自用记忆))

103 阅读1分钟

1.用法

FIND_PART_IN_SET(str1 ,str2)>0即可,例如FIND_PART_IN_SET('1,3' , '1,3,4,5')>0

2.# FIND_IN_SET()和IN、LIKE的区别

FIND_IN_SET()和IN、LIKE的区别:

1.IN和FIND_IN_SET的区别:

12SELECT dept_id, parent_id, ancestors, order_num, leader, phone ``FROM sys_dept``WHERE '101' IN (``'101,102'``) ;

in后面只能跟常量, 如果跟字符串的话,就会和字符串的值进行完全匹配,所以上面的sql查询不到记录。
但是find_in_set()函数可以使用常量或字段。

2.like和FIND_IN_SET的区别:

12SELECT dept_id, parent_id, ancestors, order_num, leader, phone ``FROM sys_dept``WHERE ancestors ``LIKE '%10%' ;

12SELECT dept_id, parent_id, ancestors, order_num, leader, phone ``FROM sys_dept``WHERE FIND_IN_SET(10, ancestors)  ;

like是广泛的模糊匹配,字符串中没有分隔符,Find_IN_SET 是精确匹配,字段值会以英文”,”分隔,
Find_IN_SET查询的结果要小于like查询的结果。