Mysql的find_in_set函数查询与like查询

对于mysql的like查询,我想都会很熟悉,对于一些基本查询也会常用,但始终不是对大数据量查询的方案。在查询数据需要对某一个字段里的值当作条件时,一般会用到like、instr()、find_in_set(),首先看一下手册里对这3种用法的定义。

expr LIKE pat [ESCAPE ‘escape-char’]

模式匹配,使用SQL简单正规表达式比较。返回1 (TRUE) 或 0 (FALSE)。 若 expr 或 pat 中任何一个为 NULL,则结果为 NULL。
模式不需要为文字字符串。例如,可以被指定为一个字符串表达式或表列。
在模式中可以同LIKE一起使用以下两种通配符:

阅读更多

Mysql的FIND_IN_SET优化使用

假如字符串str 在由N 子链组成的字符串列表strlist 中, 则返回值的范围在 1 到 N 之间 。一个字符串列表就是一个由一些被‘,’符号分开的自链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则 FIND_IN_SET() 函数被优化,使用比特计算。如果str不在strlist 或strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返回值为 NULL。 这个函数在第一个参数包含一个逗号(‘,’)时将无法正常运行。

mysql> SELECT FIND_IN_SET(‘b’,’a,b,c,d’);

例:

阅读更多