本节将简单介绍什么是函数, MySQL支持何种函数,以及如何使用这些函数
文本处理函数
select name, upper(name) as upper_name
from goods
where price > 5000
order by price;
upper()
函数可以将括号内的文本转换为大写,输出为:
+---------------------------------------+---------------------------------------+
| name | upper_name |
+---------------------------------------+---------------------------------------+
| poweredge ii服务器 | POWEREDGE II服务器 |
| x3250 m4机架式服务器 | X3250 M4机架式服务器 |
| hmz-t3w 头戴显示设备 | HMZ-T3W 头戴显示设备 |
| svp13226scb 触控超极本 | SVP13226SCB 触控超极本 |
| g150th 15.6英寸游戏本 | G150TH 15.6英寸游戏本 |
| imac me086ch/a 21.5英寸一体电脑 | IMAC ME086CH/A 21.5英寸一体电脑 |
| mac pro专业级台式电脑 | MAC PRO专业级台式电脑 |
+---------------------------------------+---------------------------------------+
常用文本处理函数
函数 | 说明 |
---|---|
Left() | 返回串左边的字符 |
Right() | 返回串右边的字符 |
Length() | 返回串的长度 |
Locate() | 找出串的一个子串 |
Lower() | 将串转换为小写 |
Upper() | 将串转换为大写 |
LTrim() | 去掉串左边的空格 |
RTrim() | 去掉串右边的空格 |
Trim() | 去掉串左右两边的空格 |
Soundex() | 返回串的 SOUNDEX 值 |
SubString() | 返回子串的字符 |
SOUNDEX
是一个将任何文本串转换为描述其语音表示的字母数字模式的算法,示例如下:
select name, brand_name
from goods
where soundex(brand_name) = soundex('dall');
因为 dell 和 dall 发音相似,所以它们的 SOUNDEX 值匹配,因此 where 子句过滤出了所需的数据,但 soundex 函数对汉字不友好。输出为:
+--------------------------------+------------+
| name | brand_name |
+--------------------------------+------------+
| vostro 3800-r1206 台式电脑 | dell |
| poweredge ii服务器 | dell |
+--------------------------------+------------+
日期和时间处理函数
常用日期和时间处理函数
函数 | 说明 |
---|---|
AddDate() | 增加一个日期(天、周等) |
AddTime() | 增加一个时间(时、分等) |
CurDate() | 返回当前日期 |
CurTime() | 返回当前时间 |
Date() | 返回日期时间的日期部分 |
DateDiff() | 计算两个日期之差 |
Date_Add() | 高度灵活的日期运算函数 |
Date_Format() | 返回一个格式化的日期或时间串 |
DayOfWeek() | 对于一个日期,返回对应的星期几 |
Second() | 返回一个时间的秒部分 |
Minute() | 返回一个时间的分钟部分 |
Hour() | 返回一个时间的小时部分 |
Day() | 返回一个日期的天数部分 |
Month() | 返回一个日期的月份部分 |
Year() | 返回一个日期的年份部分 |
Time() | 返回一个日期时间的时间部分 |
Now() | 返回当前日期和时间 |
select *
from order_info_utf
where pay_time = '2016-3-1'
limit 6;
输出为:
Empty set (1.10 sec)
以上 sql 语句表示的是至查询指定日期的订单信息,但是订单日其中包含了时间的信息,所以单纯的比较是不能查询出结果的,这时就需要使用 date
函数了,修正后如下:
select *
from order_info_utf
where date(pay_time) = '2016-3-1'
limit 6;
此 sql 语句表示只判断日期部分相等的数据,输出如下:
+----------+---------+-----------+-------+---------------------+
| order_id | user_id | pay_state | price | pay_time |
+----------+---------+-----------+-------+---------------------+
| 2 | 11211 | 已支付 | 487 | 2016-03-01 00:03:00 |
| 3 | 11211 | 未支付 | 794 | 2016-03-01 00:08:00 |
| 4 | 74553 | 已支付 | 737 | 2016-03-01 00:02:00 |
| 5 | 37799 | 已支付 | 647 | 2016-03-01 00:01:00 |
| 6 | 11211 | 已支付 | 1200 | 2016-03-01 00:04:00 |
| 7 | 11211 | 已支付 | 470 | 2016-03-01 00:04:00 |
+----------+---------+-----------+-------+---------------------+
数值处理函数
常用数值处理函数
函数 | 说明 |
---|---|
Abs() | 返回一个数的绝对值 |
Cos() | 返回一个角度的余弦 |
Exp() | 返回一个数的指数值 |
Mod() | 返回除操作的余数 |
Pi() | 返回圆周率 |
Rand() | 返回一个随机数 |
Sin() | 返回一个角度的正弦 |
Sqrt() | 返回一个数的平方根 |
Tan() | 返回一个角度的正切 |
网友评论