mysql高级函数汇总


一、FIND_IN_SET():

  FIND_IN_SET()函数返回指定字符串在以逗号分隔的字符串列表中的位置。常用在部门的子部门或者子部门的上级部门等场景下使用。

  FIND_IN_SET(needle,haystack);

  FIND_IN_SET()函数接受两个参数:

  • 第一个参数needle是要查找的字符串。
  • 第二个参数haystack是要搜索的逗号分隔的字符串列表。

  FIND_IN_SET()函数根据参数的值返回一个整数或一个NULL值:

  • 如果needlehaystackNULL,则函数返回NULL值。
  • 如果needle不在haystack中,或者haystack是空字符串,则返回零。
  • 如果needlehaystack中,则返回一个正整数。

  请注意,如果needle包含逗号(),该函数将无法正常工作。 此外,如果needle是一个常量字符串,而且haystack是一个类型为SET的列,MySQL将使用位算术优化。
二、LOCATE(substr,str) , LOCATE(substr,str,pos

  LOCATE(substr,str) , LOCATE(substr,str,pos

  第一个语法返回字符串 str中子字符串substr的第一个出现位置。第二个语法返回字符串str中子字符串substr的第一个出现位置, 起始位置在pos。如若substr 不在str中,则返回值为0。

  find_in_set 和 like  和 in 以及locate 的区别:

  四种语句的使用场景各有不同,需要根据特定场景使用指定函数,like是广泛的模糊匹配,字符串中没有分隔符,Find_IN_SET 是精确匹配,字段值以英文”,”分隔。in语句相对于find_in_set语句的执行效率较高。locate相对于like语句的执行效率较高,所以正常可以考虑使用locate代替like。

三、elt(N,str1,str2,str3....)

  ELT(N,str1,str2,str3,...)

  如果N= 1,返回str1,如果N= 2,返回str2,等等。如果N小于1或大于参数个数,返回NULL。ELT()是FIELD()反运算。
四.INTERVAL(N,N1,N2,N3,..........)

   INTERVAL()函数进行比较列表(N1,N2,N3等等)中的N值。该函数如果N<N1返回0,如果N<N2返回1,如果N<N3返回2 等如果N为NULL,它将返回-1.列表值必须是    N1<N2<N3的形式才能正常工作。

五、elt函数与interval实现分组统计

   select elt(interval(d.yb,0, 100, 500, 1000), 'less100', '100to500', '500to1000', 'more1000') as yb_level, count(d.id) as cnt

   from k1 d   group by elt(interval(d.yb, 0, 100, 500, 1000), 'less100', '100to500', '500to1000', 'more1000K');

六、CAST(x AS type)转换数据类型

 

SELECT CAST("2017-08-29" AS DATE);-> 2017-08-29

 

七、NULLIF(expr1, expr2)比较两个字符串,如果字符串 expr1 与 expr2 相等 返回 NULL,否则返回 expr1

 

SELECT NULLIF(25, 25);->

 

八、ISNULL(expression)判断表达式是否为 NULL

 

SELECT ISNULL(NULL);->1

 

九、IFNULL(v1,v2)如果 v1 的值不为 NULL,则返回 v1,否则返回 v2。

 

SELECT IFNULL(null,'Hello World')->Hello World

 

十、IF(expr,v1,v2)如果表达式 expr 成立,返回结果 v1;否则,返回结果 v2。

 

SELECT IF(1 > 0,'正确','错误')->正确

 

十一、CONVERT(s USING cs)函数将字符串 s 的字符集变成 cs

 

SELECT CHARSET('ABC')
->utf-8    

SELECT CHARSET(CONVERT('ABC' USING gbk))
->gbk
十二、COALESCE(expr1, expr2, ...., expr_n)返回参数中的第一个非空表达式(从左向右)
SELECT COALESCE(NULL, NULL, NULL, 'csdn.com', NULL, 'google.com');
-> csdn.com


 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM