前言: 本文主要是参考mysql官方文档,并加上自己的测试用例,来加深自己对mysql函数的理解,也借此平台与大家分享,如有不妥和错误之处欢迎读者评论,我会及时改正,愿与大家一起学习进步。
概述: 所谓function(特指mysql函数)就是mysql服务器预先编写的函数,来供我们使用。这些函数可用在where,ORDER BY
,HAVING用于查询条件,也可用于select之后用于显示给我们....比较难概述呵呵。
注意:默认情况下,函数名称和后面的括号之间不应有空格 ,例如CONCAT('My', 'S', 'QL')。这有助于MySQL解析器区分函数调用和对恰好与函数同名的表或列的引用。是否可以使用和--sql-mode=IGNORE_SPACE
有关。
零:1
(TRUE
)或 0
(FALSE
)
一:流程控制
1.1 CASE
语法一: CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN result ...] [ELSE result] END 语法二: CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
eg1(语法1):SELECT CASE 1 WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE 'more' END; -> 'one'
eg2(语法2):SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END; -> 'true'
1.2 IF(
expr1
,expr2
,expr3
) 如果表达式1成立,则输出2,否则输出2
eg1: mysql> SELECT IF(1>2,2,3); -> 3
eg2: select if(count(a)=22,'yes','no') from test where a='a';
1.3 IFNULL(
expr1
,expr2
) NULLIF(
expr1
,expr2
)
二:字符串比较like
语法:expr
LIKE pat
[ESCAPE 'escape_char
'] //可选参数escape 是指定转义字符
eg:SELECT 'a' = 'a ', 'a' LIKE 'a '; // 注意空格 like和=的区别
SELECT 'a' = 'a ', 'a' LIKE 'a ';
+------------+---------------+
| 'a' = 'a ' | 'a' LIKE 'a ' |
+------------+---------------+
| 1 | 0 |
+------------+---------------+
like:统配符
-
%
匹配0个或多个字符。 -
_
只匹配一个字符。
eg2 :mysql> SELECT 'David!' LIKE 'David_'; -> 1
mysql> SELECT 'David!' LIKE '%D%v%'; -> 1:
转义字符:
eg3:mysql> SELECT 'David!' LIKE 'David\_'; -> 0
mysql> SELECT 'David_' LIKE 'David\_'; -> 1
指定转义字符‘’
mysql> SELECT 'David_' LIKE 'David|_' ESCAPE '|'; -> 1
三:正则表达式 参考文献
^ : 匹配开头
mysql> SELECT 'fofo' REGEXP '^fo$'; -> 0 mysql> SELECT 'fofo' REGEXP '^fo'; -> 1
$ :匹配尾部
mysql> SELECT 'fofo' REGEXP '^fofo$'; -> 1
. :匹配任意字符
SELECT 'fofo' REGEXP '^f.*$'; +-----------------------+ | 'fofo' REGEXP '^f.*$' | +-----------------------+ | 1 | +-----------------------+
a* :匹配零个或多个a
字符(*修饰前一个符号)
mysql> SELECT 'Ban' REGEXP '^Ba*n'; -> 1
mysql> SELECT 'Baaan' REGEXP '^Ba*n'; -> 1
SELECT 'Bn' REGEXP '^B.*n$'; +----------------------+ | 'Bn' REGEXP '^B.*n$' | +----------------------+ | 1 | +----------------------+
a? :匹配零个或一个a
字符 (?修饰前一个符号)
mysql> SELECT 'Bn' REGEXP '^Ba?n'; -> 1 mysql> SELECT 'Ban' REGEXP '^Ba?n'; -> 1 mysql> SELECT 'Baan' REGEXP '^Ba?n'; -> 0
de|abc :或
mysql> SELECT 'pi' REGEXP 'pi|apa'; -> 1 mysql> SELECT 'axe' REGEXP 'pi|apa'; -> 0 mysql> SELECT 'apa' REGEXP 'pi|apa'; -> 1 mysql> SELECT 'apa' REGEXP '^(pi|apa)$'; -> 1 mysql> SELECT 'pi' REGEXP '^(pi|apa)$'; -> 1 mysql> SELECT 'pix' REGEXP '^(pi|apa)$'; -> 0
(abc)* :()里面是个整体 匹配0个或多个()中的内容
mysql> SELECT 'pi' REGEXP '^(pi)*$'; -> 1 mysql> SELECT 'pip' REGEXP