我是靠谱客的博主 傻傻冥王星,最近开发中收集的这篇文章主要介绍10.常见的内置函数1. 常见函数2. 字符函数3. 数学函数4. 日期函数5. 其他函数6. 流程控制函数,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
1. 常见函数
- 语法:SELECT 函数名称(参数列表) [FROM 数据表名称];
- 分类:
- 单行函数(给定一个值返回一个结果)
- 字符函数
- 数学函数
- 日期函数
- 其他函数
- 流程控制函数
- 分组函数(聚集函数|统计函数,给定一些值返回一个值)
- 单行函数(给定一个值返回一个结果)
2. 字符函数
2.1 获取字节个数
-
函数:length(str)
-
注意:utf8字符集中一个汉字占三个字节,一个英文占一个字节
# 查询"Hello World"的字节个数
SELECT LENGTH('Hello World');
# 结果
+-----------------------+
| length('Hello World') |
+-----------------------+
|
11 |
+-----------------------+
1 row in set (0.11 sec)
# 查询"武汉"的字节个数
SELECT LENGTH('武汉');
# 结果
+------------------+
| length('武汉')
|
+------------------+
|
6 |
+------------------+
1 row in set (0.00 sec)
2.2 获取字符个数
- 函数:char_length(str)
- 注意:一个汉字算一个字符,一个英文算一个字符
# 查询"Hello World"的字符个数
SELECT CHAR_LENGTH('Hello');
# 结果
+----------------------------+
| char_length('Hello World') |
+----------------------------+
|
11 |
+----------------------------+
1 row in set (0.00 sec)
# 查询"武汉"的字符个数
SELECT CHAR_LENGTH('武汉');
# 结果
+-----------------------+
| char_length('武汉')
|
+-----------------------+
|
2 |
+-----------------------+
1 row in set (0.00 sec)
2.3 拼接字符串
- 函数:concat(str1,str2,str3,…)
- 注意:可以拼接字符串、数值型、日期型
# Hello + ' ' + World
SELECT CONCAT('Hello',' ','World');
# 结果
+-----------------------------+
| concat('Hello',' ','World') |
+-----------------------------+
| Hello World
|
+-----------------------------+
1 row in set (0.00 sec)
2.4 小写转大写
- 函数:upper(str)
- 注意:已经大写的不进行转化
# 将"hello world"转成"HELLO WORLD"
SELECT UPPER('hello world');
# 结果
+----------------------+
| upper('hello world') |
+----------------------+
| HELLO WORLD
|
+----------------------+
1 row in set (0.00 sec)
2.5 大写转小写
- 函数:lower(str)
- 注意:已近大写的不进行转化
# 将"HELLO WORLD"转成"hello world"
SELECT LOWER('HELLO WORLD');
# 结果
+----------------------+
| lower('hello world') |
+----------------------+
| hello world
|
+----------------------+
1 row in set (0.00 sec)
2.6 截取子串
-
substr(str,index)
-
substr(str,index,length)
-
substr(str from index)
-
substr(str from index for length)
-
注意:索引从1开始,不是从0
# 截取"Hello World"的子串"o W"
SELECT SUBSTR('Hello World',5,3);
# 结果
+---------------------------+
| substr('Hello World',5,3) |
+---------------------------+
| o W
|
+---------------------------+
1 row in set (0.00 sec)
2.7 获取子串索引
- 函数:instr(parentStr, childStr)
- 注意:如果出现多个,只返回第一次出现时的索引
# 获取"Hello World"的子串"o W"的索引
SELECT INSTR('Hello World','o W');
# 结果
+----------------------------+
| instr('Hello World','o W') |
+----------------------------+
|
5 |
+----------------------------+
1 row in set (0.00 sec)
2.8 去除前后字符
-
trim(str)
-
trim(childStr from parentStr)
-
注意:默认去除前后空格字符,若用重载函数可以自定义去除字符
# 去除"aaaHello aa Worldaaaaaa"的前后"aa"字符
SELECT TRIM('aa' FROM 'aaaHello aa Worldaaaaaa');
# 结果
+-------------------------------------------+
| TRIM('aa' FROM 'aaaHello aa Worldaaaaaa') |
+-------------------------------------------+
| aHello aa World
|
+-------------------------------------------+
1 row in set (0.00 sec)
2.9 左填充字符
-
函数:lpad(str1, length, str2)
-
注意:str1表示被填充字符串,str2表示填充字符串,length表示填充后字符串长度
# 用"@*"左填充"Hello World",填充后总字符串长度为20
SELECT LPAD('Hello World','@*',20);
# 结果
+-----------------------------+
| LPAD('Hello World',20,'@*') |
+-----------------------------+
| @*@*@*@*@Hello World
|
+-----------------------------+
1 row in set (0.00 sec)
2.10 右填充字符
- 函数:rpad(str1,length,str2)
- 注意:str1表示被填充字符串,str2表示填充字符串,length表示填充后字符串长度
# 用"@*"右填充"Hello World",填充后总字符串长度为20
SELECT RPAD('Hello World',20,'@*');
# 结果
+-----------------------------+
| RPAD('Hello World',20,'@*') |
+-----------------------------+
| Hello World@*@*@*@*@
|
+-----------------------------+
1 row in set (0.00 sec)
2.11 替换指定字符
- 函数:replace(str1,str2,str3)
- 注意:str1表示字符父串,str2表示需要替换的字符或字符串,str3表示替换的字符或字符串
# 将"Hello World"中的"o"替换为"@#"
SELECT REPLACE("Hello World",'o','@#');
# 结果
+---------------------------------+
| REPLACE("Hello World",'o','@#') |
+---------------------------------+
| Hell@# W@#rld
|
+---------------------------------+
1 row in set (0.00 sec)
3. 数学函数
3.1 四舍五入
-
round(number)
-
round(number,index)
-
注意:默认在小数点后第一位上四舍五入,若用重载可以自己定义从哪一位上四舍五入
# 四舍五入1.69999保留2位小数
SELECT ROUND(1.6999,2);
# 结果
+-----------------+
| round(1.6999,2) |
+-----------------+
|
1.70 |
+-----------------+
1 row in set (0.00 sec)
3.2 向上取整
- 函数:ceil(number)
- 注意:获取大于或等于该数的最小整数
# 取大于1.56的最小整数
SELECT CEIL(1.56);
# 结果
+------------+
| ceil(1.56) |
+------------+
|
2 |
+------------+
1 row in set (0.00 sec)
3.3 向下取整
- 函数:floor(number)
- 注意:获取小于或等于该数的最大整数
# 取小于1.56的最大整数
SELECT FLOOR(1.56);
# 结果
+-------------+
| floor(1.56) |
+-------------+
|
1 |
+-------------+
1 row in set (0.00 sec)
3.4 保留位数
- 函数:truncate(number,length)
- 注意:保留length位小数,不做四舍五入处理
# 对1.69999保留2位小数
SELECT TRUNCATE(1.69999,2);
# 结果
+---------------------+
| truncate(1.69999,2) |
+---------------------+
|
1.69 |
+---------------------+
1 row in set (0.00 sec)
3.5 取余数
- 函数:mod(number1,number2)
- 注意:取number1除以number2的余数,实质是number1-number1/number2*number2
# 取10/3的余数
SELECT MOD(10,3);
# 结果
+-----------+
| mod(10,3) |
+-----------+
|
1 |
+-----------+
1 row in set (0.00 sec)
4. 日期函数
格式符 | 含义 |
---|---|
%Y | 四位年份 |
%y | 两位年份 |
%m | 月份(01,02,…) |
%c | 月份(1,2…) |
%d | 日(01,02,…) |
%H | 二十四小时制 |
%h | 十二小时制 |
%i | 分钟(01,02,…) |
%s | 秒(01,02,…) |
4.1 获取系统当前日期+时间
- 函数:now()
# 获取系统当前日期和时间
SELECT NOW();
# 结果
+---------------------+
| now()
|
+---------------------+
| 2020-07-06 13:50:48 |
+---------------------+
1 row in set (0.00 sec)
4.2 获取系统当前日期
- 函数:curdate()
# 获取系统当前日期
SELECT CURDATE();
# 结果
+------------+
| curdate()
|
+------------+
| 2020-07-06 |
+------------+
1 row in set (0.00 sec)
4.3 获取系统当前时间
- 函数:curtime()
# 获取系统当前时间
SELECT CURTIME();
# 结果
+-----------+
| curtime() |
+-----------+
| 13:53:41
|
+-----------+
1 row in set (0.00 sec)
4.4 获取年、月、日、时、分、秒
- 函数:year(date) month(date) day(date) hour(date) minute(date) second(date)
# 获取当前系统的年、月、日、时、分、秒
SELECT YEAR(NOW()),MONTH(NOW()),DAY(NOW()),HOUR(NOW()),MINUTE(NOW()),SECOND(NOW());
# 结果
+-------------+--------------+------------+-------------+---------------+---------------+
| YEAR(NOW()) | MONTH(NOW()) | DAY(NOW()) | HOUR(NOW()) | MINUTE(NOW()) | SECOND(NOW()) |
+-------------+--------------+------------+-------------+---------------+---------------+
|
2020 |
7 |
6 |
13 |
57 |
13 |
+-------------+--------------+------------+-------------+---------------+---------------+
1 row in set (0.00 sec)
4.5 日期字符串转日期
- 函数:str_to_date(str,format)
- 注意:将str按format格式转化为日期
# 将"1997-01-01"按‘%Y-%m-%d’转化为日期类型
SELECT STR_TO_DATE('1997-01-01','%Y-%m-%d');
# 虽然好像什么区别,这是因为select为将日期类型转成字符串展示
# 就类似java中的System.out.println(student);调用student对象的toString()输出
+--------------------------------------+
| STR_TO_DATE('1997-01-01','%Y-%m-%d') |
+--------------------------------------+
| 1997-01-01
|
+--------------------------------------+
1 row in set (0.00 sec)
4.6 日期转日期字符串
- 函数:date_format(date,format)
- 注意:将date按format格式转化为日期字符串
# 将当前系统日期按"%m-%d %Y"格式输出
SELECT DATE_FORMAT(CURDATE(),'%m-%d %Y');
# 结果
+-----------------------------------+
| DATE_FORMAT(CURDATE(),'%m-%d %Y') |
+-----------------------------------+
| 07-06 2020
|
+-----------------------------------+
1 row in set (0.00 sec)
5. 其他函数
5.1 获取mysql版本
- 函数:version()
# 获取mysql版本信息
SELECT VERSION();
# 结果
+-----------+
| VERSION() |
+-----------+
| 5.6.48
|
+-----------+
1 row in set (0.00 sec)
5.2 获取当前使用数据库
- 函数:database()
# 获取当前使用的数据库
SELECT DATABASE();
# 结果
+------------+
| DATABASE() |
+------------+
| mysql
|
+------------+
1 row in set (0.00 sec)
5.3 获取当前用户
- 函数:user()
# 获取当前用户
SELECT USER();
# 结果
+----------------+
| USER()
|
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)
5.4 NULL值处理
- 函数:ifnull(str1,str2)
- 注意:如果str1==null,则是str1=str2,否则str1=str1
# 处理NULL值
SELECT IFNULL(NULL,'我本来就是NULL值');
# 结果
+---------------------------------------+
| IFNULL(NULL,'我本来就是NULL值')
|
+---------------------------------------+
| 我本来就是NULL值
|
+---------------------------------------+
1 row in set (0.00 sec)
5.5 NULL值判断
- 函数:isnull(str)
- 注意:该函数的效率高于IS NULL关键字,推荐使用
# NULL值判断
SELECT ISNULL(NULL);
# 结果
+--------------+
| ISNULL(NULL) |
+--------------+
|
1 |
+--------------+
1 row in set (0.00 sec)
6. 流程控制函数
6.1 if函数
- 语法:if(条件,值1,值2)
- 注意:条件为真为值1,条件为假为值2,类似java中的三目运算符
# 判断10>5的结果
SELECT IF(10>5,'大于','小于');
# 结果
+----------------------------+
| IF(10>5,'大于','小于')
|
+----------------------------+
| 大于
|
+----------------------------+
1 row in set (0.00 sec)
6.2 case函数
-
使用方式一
-
注意:这是等值判断,类似java中的switch语句
# 语法
CASE 待判断变量
WHEN 值1 THEN 显示的值1或语句1
WHEN 值2 THEN 显示的值2或语句2
......
ELSE 显示的值n或语句n
END
# 查询订单表支付情况
SELECT `b_name` 产品名称,
CASE `b_isPay`
WHEN 1 THEN '已付款'
WHEN 0 THEN '未付款'
ELSE '不清楚'
END 支付情况
FROM `bill`;
-
使用方式二
-
注意:这是区间判断,类似java中的多重if语句
# 语法
CASE
WHEN 条件1 THEN 显示的值1或语句1
WHEN 条件2 THEN 显示的值2或语句2
......
ELSE 显示的值n或语句n;
END
# 查询订单表支付等级
SELECT `b_name` 产品名称,
CASE
WHEN `b_price` > 50000 THEN 'A等级'
WHEN `b_price` > 40000 THEN 'B等级'
WHEN `b_price` > 30000 THEN 'C等级'
WHEN `b_price` > 20000 THEN 'D等级'
ELSE 'E等级'
END 支付等级
FROM `bill`;
最后
以上就是傻傻冥王星为你收集整理的10.常见的内置函数1. 常见函数2. 字符函数3. 数学函数4. 日期函数5. 其他函数6. 流程控制函数的全部内容,希望文章能够帮你解决10.常见的内置函数1. 常见函数2. 字符函数3. 数学函数4. 日期函数5. 其他函数6. 流程控制函数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复