“ 每天进步一点点”

★★★【前文链接MySQL必知必会笔记(1)】
前文补充:
7.8 简单的正则表达式测试
可以在不使用数据库表的情况下用SELECT来测试正则表达式。REGEXP检查总是返回0(没有匹配)或1(匹配)。可以用带文字串的REGEXP来测试表达式,并实验他们。相应的语法如下:
SELECT 'hello, world' REGEXP '[0-9]'
上述代码显然返回0,因为文本'hello, world'中没有数字。
8. MySQL中的函数
8.0 函数的简单测试方法及为列取别名
对于下文将要介绍的函数,可以使用如下方式进行简单的测试而不需使用具体的数据库表格,但是使用函数检索结果的列名是以函数的复杂信息显示的,为了显示简洁及便于利用检索出来的值,我们可以使用关键字AS
为新列取别名。
代码如下:
SELECT LENGTH('hello');
-- 显示结果
+----------------+
|LENGTH('hello') |
+----------------+
| 5 |
+----------------+
-- 对使用函数的新列取别名
SELECT LENGTH('hello') AS result;
-- 显示结果
+-------+
|result |
+-------+
| 5 |
+-------+
其余函数测试方法类似,不再赘述(有的不可以使用此方法测试,注意即可)。
8.1 文本处理函数
☆★☆特别注意:MySQL中串下标从1开始而不是0。
本表格中函数参数省略。
| 函数 | 说明 |
|---|---|
Concat() | 拼接串 |
Trim() | 去掉串左右两边的空格 |
LTrim() | 去掉串左边的空格 |
RTrim() | 去掉串右边的空格 |
Upper() | 将串转换为大写 |
SubString() | 返回子串的字符 |
Locate() | 找出串的一个子串 |
Length() | 返回串的长度 |
Left() | 返回串左边length长度的字符 |
Right() | 返回串右边length长度的字符 |
Soundex() | 返回串的soundex值 |
Reverse() | 翻转串 |
Concat()
SELECT CONCAT('col_name1=',col_name1,',col_name2=',col_name2) AS result
FROM tbl_name;
//输出形式
col_name1=col_name1的内容,col_name2=col_name2的内容
Trim()
、LTrim()
、RTrim()
SELECT TRIM(col_name) AS result FROM tbl_name;
SELECT LTRIM(col_name) AS result FROM tbl_name;
SELECT RTRIM(col_name) AS result FROM tbl_name;
Upper()
SELECT UPPER(col_name) AS result FROM tbl_name;
SubString()
-- 从第n位开始,共截取m位
SELECT SUBSTRING(col_name,n,m) AS result FROM tbl_name;
-- 从第n位开始,截取到串尾
SELECT SUBSTRING(col_name,n,m) AS result FROM tbl_name;
Locate()
-- 如果子串在主串(表的列值)中有匹配,返回在主串中第一个字符的下标
-- 如果不匹配则返回0
SELECT LOCATE(substring, string) AS result FROM tbl_name;
-- 从主串的pos位置开始往后匹配
SELECT LOCATE(substring, string, pos) AS result FROM tbl_name;
-- 常使用方式
-- 例如:从websites表中检索出网址的url列值中以‘https://’开头的行
SELECT * FROM websites
WHERE LACATE('https://', url) = 1 -- (如果‘=0’则表示不以‘https://’开头)
类似函数:
POSITION(substring IN string)
INSTR(string, substring)
不予详细介绍。
Length()
SELECT LENGTH(col_name) AS result FROM tbl_name
Left()
、Right()
-- 返回串左边length长度的字符
SELECT LEFT(string, length) AS result FROM tbl_name;
-- 返回串右边length长度的字符
SELECT LEFT(string, length) AS result FROM tbl_name;
Soundex()
SELECT * FROM tbl_name
WHERE SOUNDEX(col_name) = SOUNDEX(string)
注意:Soundex()
函数是对串进行发音匹配比较而不是字母。
Reverse()
-- 将串翻转
SELECT REVERSE(col_name) AS result FROM tbl_name;
8.2 时间日期处理函数
| 函数 | 说明 |
|---|---|
Now() | 返回当前日期和时间 |
CurDate() | 返回当前日期 |
CurTime() | 返回当前时间 |
Date(date) | 返回日期时间的日期部分 |
Time(date) | 返回日期时间的时间部分 |
Year(date) | 返回一个日期的年份部分 |
Month(date) | 返回一个日期的月份部分 |
Day(date) | 返回一个日期的天数部分 |
Hour(time) | 返回一个时间的小时部分 |
Minute(time) | 返回一个时间的分钟部分 |
Second(time) | 返回一个时间的秒数部分 |
AddDate(date, INTERVAL expr unit) | 增加一个间隔日期 |
Date_Add(date, INTERVAL expr unit) | 增加一个间隔日期(高度灵活) |
AddTime(date, datetime) | 增加一个间隔时间 |
DateDiff(date1, date2) | 计算两个日期之差(天数) |
Date_Format(date, format) | 返回格式化日期 |
DayOfWeek(date) | 返回日期对应是星期几 |
参数说明:
date为时间参数 AddDate()
和Date_Add()
中的参数
date:起始日期或者起始时间。
expr:指定的是一个间隔值,在起始时间中增加或者减少。expr是一个字符串,对于负值间隔,可以以"-"开头。
unit:表示的是一个单位(day/month/year),比如:加上的是1天还是一个小时。
AddTime(date, datetime)
中datetime格式如:'1 2:3:0'(1天2小时3分钟0秒)补充format可用格式:
| 格式 | 描述 |
|---|---|
| %a | 缩写星期名 |
| %b | 缩写月名 |
| %c | 月,数值 |
| %D | 带有英文前缀的月中的天 |
| %d | 月的天,数值(00-31) |
| %e | 月的天,数值(0-31) |
| %f | 微秒 |
| %H | 小时 (00-23) |
| %h | 小时 (01-12) |
| %I | 小时 (01-12) |
| %i | 分钟,数值(00-59) |
| %j | 年的天 (001-366) |
| %k | 小时 (0-23) |
| %l | 小时 (1-12) |
| %M | 月名 |
| %m | 月,数值(00-12) |
| %p | AM 或 PM |
| %r | 时间,12-小时(hh:mm:ss AM 或 PM) |
| %S | 秒(00-59) |
| %s | 秒(00-59) |
| %T | 时间, 24-小时 (hh:mm:ss) |
| %U | 周 (00-53) 星期日是一周的第一天 |
| %u | 周 (00-53) 星期一是一周的第一天 |
| %V | 周 (01-53) 星期日是一周的第一天,与 %X 使用 |
| %v | 周 (01-53) 星期一是一周的第一天,与 %x 使用 |
| %W | 星期名 |
| %w | 周的天 (0=星期日, 6=星期六) |
| %X | 年,其中的星期日是周的第一天,4 位,与 %V 使用 |
| %x | 年,其中的星期一是周的第一天,4 位,与 %v 使用 |
| %Y | 年,4 位 |
| %y | 年,2 位 |
例如:
DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p')
-- 显示格式
Dec 29 2008 11:45 PM
8.3 数值处理函数
本表格中函数参数省略。
| 函数 | 说明 |
|---|---|
Abs() | 返回一个数的绝对值 |
Exp() | 返回一个数的指数 |
Sqrt() | 返回一个数的平方根 |
Mod() | 返回除操作的余数 |
Pi() | 返回圆周率 |
Rand() | 返回一个随机数 |
Sin() | 返回一个角度的正弦 |
Cos() | 返回一个角度的余弦 |
Tan() | 返回一个角度的正切 |
8.4 聚集函数
本表格中函数参数省略。
| 函数 | 说明 |
|---|---|
| COUNT() | 返回某列的行数 |
| SUM() | 返回某列的和 |
| AVG() | 返回某列的平均值 |
| MAX() | 返回某列的最大值 |
| MIN() | 返回某列的最小值 |
注意:
对NULL值是否忽略
上表格聚集函数都自动忽略NULL值,除了如下这种特殊情况:
如果使用COUNT()时指定列名,即 COUNT(col_name)
时,此函数会忽略NULL值;如果使用COUNT(*)时,则不会忽略NULL值。
使用标准的算术操作符,所有的聚集函数都可以用来执行多个列上的计算。
如:
SELECT SUM(col1*col2) AS result FROM tbl_name;
8.5 函数应用位置
🔺函数不仅可以使用在SELECT后面,也可以使用在WHERE子句后面进行过滤数据。
-- 检索出日期在2017-01-01到2020-01-01之间的所有行
SELECT * FROM tbl_name
WHERE DATE(col_name) = BETWEEN '2017-01-01' AND '2020-01-01'
其余用法类似,在此不再赘述。
------------------------END------------------------
推荐阅读
(❤ ω ❤)喜欢的话关注一波吧(❤ ω ❤)





