经常使用MYSQL,收集一些常用的函数来应付不给力的记性~
1.FIND_IN_SET
- FIND_IN_SET(str,strlist)
假如字符串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');
-> 2
用起来很简单
就以上面我说到的情况来举例:
以下为引用的内容:
select * from article where FIND_IN_SET('4',type)
2.CONCAT
-
CONCAT(str1,str2,…)
一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast, 例如:
SELECT CONCAT(CAST(int_col AS CHAR), char_col)
MySQL的concat函数在连接字符串的时候,只要其中一个是NULL,那么将返回NULL
select concat('11','22',null);
2.CONCAT_WS
concat_ws()函数和concat()都是MySQL字符串处理函数,功能比较类似,但是也所有所区别,主要是处理的字符串不大一样
concat_ws()函数, 表示concat with separator,即有分隔符的字符串连接
如连接后以逗号分隔:
mysql> select concat_ws(',','11','22','33'); +-------------------------------+ | concat_ws(',','11','22','33') | +-------------------------------+ | 11,22,33 | +-------------------------------+ 1 row in set (0.00 sec)
和concat不同的是, concat_ws函数在执行的时候,不会因为NULL值而返回NULL
2.LENGTH 和CHAR_LENGTH
length: 是计算字段的长度一个汉字是算三个字符,一个数字或字母算一个字符
char_length:不管汉字还是数字或者是字母都算是一个字符