MySql学习笔记(三) - 函数
现有表
1. 文本处理函数
Upper():将小写转换为大写
输入:SELECT id,Upper(name) FROM t_order
输出:
+——+——————-+
| id | Upper(name) |
+——+——————-+
| 1 | 张三 |
| 2 | 李四 |
| 3 | 王五 |
| 4 | NICK |
| 5 | JACK |
+——+——————-+
函数 | 说明 |
Left() | 返回串左边的字符 |
Length() | 返回串的长度 |
Locate() | 找出串的一个子串 |
Lower() | 将串转换为小写 |
LTrim() | 去掉串左边的空格 |
Right() | 返回串右边的字符 |
RTrim() | 去掉串右边的空格 |
Soundex() | 返回串的SOUNDEX值 **1 |
SubString() | 返回子串的字符 |
Upper() | 将串转换为大写 |
- SOUNDEX是一个将任何文本串转换为描述其语音表示的字母数字模式的算法。SOUNDEX考虑了类似的发音和音节,使得能对串进行发音比较而不是字母比较。虽然SOUNDEX不是SQL概念,但MySql都提供对SOUNDEX的支持。
例如输入:SELECT id,name FROM t_order WHERE name = ‘jick’
输出:Empty set
用Soundex()函数进行搜索,他匹配所有发音类似于 ‘jick’ 的串。
输入:SELECT id,name FROM t_order WHERE Soundex(name) = Soundex(‘jick’)
输出:
+——+———+
| id | name |
+——+———+
| 5 | jack |
+——+———+
- 日期和时间处理函数
函数 | 说明 |
AddDate() | 增加一个日期(天、周等) |
AddTime() | 增加一个时间(时、分等) |
CurDate() | 返回当前日期 |
CurTime() | 返回当前时间 |
Date() | 返回日期时间的日期部分 |
DateDiff() | 计算两个日期之差 |
Date_add() | 高度灵活的日期运算函数 |
Date_Format() | 返回一个格式化的日期或时间串 |
Day() | 返回一个日期的天数部分 |
DayOfWeek() | 对于一个日期,返回对应的星期几 |
Hour() | 返回一个时间的小时部分 |
Minute() | 返回一个时间的分钟部分 |
Month() | 返回一个日期的月份部分 |
Now() | 返回当前日期和时间 |
Second() | 返回一个时间的秒部分 |
Time() | 返回一个日期时间的时间部分 |
Year() | 返回一个日期的年份部分 |
MySql使用的日期格式。无论什么时候指定一个日期,不管是插入或更新表值还是用WHERE子句进行过滤,日期必须为格式yyyy-mm-dd
现有表
输入:SELECT id,name,birthday FROM t_order WHERE birthday = ‘2018-06-04’
输出:
+——+———+——————+
| id | name | birthday |
+——+———+——————+
| 3 | 王五 | 2018-06-04 |
+——+———+——————+
当 WHERE 条件字段类型为 data时,搜索可用。但是如果想要搜索 create_time 时间为 2018-06-04 15:12:51时,上面的方法就不行了。因为 create_time 数据类型为 datetime ,条件要列出 hhss。
解决办法是只是MySql仅将给出的日期与列中的日期部分进行比较,而不是将给出的日期与整个列值进行比较。为此,必须使用Date()函数。Date(create_time)指示MySql近提取列的日期部分,更可靠的SELECT语句为:
SELECT id,name,create_time FROM t_order WHERE Date(create_time) = ‘2018-06-04’;
如果想要检索2018年6月生日的人:
输入:SELECT id,name,birthday FROM t_order WHERE birthday BETWEEN ‘2018-06-01’ AND ‘2018-06-30’
输出:
+——+———+——————+
| id | name | birthday |
+——+———+——————+
| 1 | 张三 | 2018-06-02 |
| 3 | 王五 | 2018-06-04 |
+——+———+——————+
还有另外一种办法:SELECT id,name,birthday FROM t_order WHERE Year(birthday) = 2018 AND Month(birthday) = 6
- 数值处理函数
函数 | 说明 |
Abs() | 返回一个数的绝对值 |
Cos() | 返回一个角度的余弦值 |
Exp() | 返回一个属的指数值 |
Mod() | 返回操作数的余数 |
Pi() | 返回圆周率 |
Ran() | 返回一个随机数 |
Sin() | 返回一个角度的正弦 |
Sqrt() | 返回一个数的平方根 |
Tan() | 返回回一个角度的正切 |
还没有评论,来说两句吧...