MySQL 提供了很多内置函数,通过这些内置函数,您可以在查询数据的同时对数据做一些相应的处理,无需再使用其它编程语言来处理。例如 MySQL 存储日期时间大多都会用 INT 类型的时间戳,直接查询出来是一串数字,还需要用 PHP 之类的语言来格式化。通过 MySQL 的内置函数您可以在查询的同时就对时间戳做格式化处理。

数学函数

数学函数可以用来处理各种数值类型的数据。

CEIL()

CEIL 的功能是对小数进行 向上取整

用法如下:

SELECT CEIL(3.1)
+-----------+
| CEIL(3.1) |
+-----------+
|         4 |
+-----------+

3.1 的小数向上取整后就是 4

我这里为了方便演示,数据表中没有的数据就不输出数据表了。

如果是在正常的数据查询中可以在括号内传入字段名称。

FLOOR()

FLOOR 的功能是对小数进行 向下取整

用法如下:

SELECT FLOOR(3.1)
+------------+
| FLOOR(3.1) |
+------------+
|          3 |
+------------+

3.1 的小数向下取整就是 3,也就是直接去除小数。

POWER()

POWER 的功能是 幂运算

下面计算 3 的 4 次方:

SELECT POWER(3, 4)
+-------------+
| POWER(3, 4) |
+-------------+
|          81 |
+-------------+

ROUND()

ROUND 的功能是 四舍五入

下面对 9.9999 进行四舍五入,保留小数点后两位:

SELECT ROUND(9.9999, 2)
+------------------+
| ROUND(9.9999, 2) |
+------------------+
|            10.00 |
+------------------+

TRUNCATE()

TRUNCATE 的功能是 数字截取TRUNCATEROUND 不一样的地方就是 TRUNCATE 只会截取数字,不会四舍五入。

下面对 9.9999 进行截取,保留小数点后两位:

SELECT TRUNCATE(9.9999, 2)
+---------------------+
| TRUNCATE(9.9999, 2) |
+---------------------+
|                9.99 |
+---------------------+

ABS()

ABS 的功能是 获取绝对值

下面获取 -3 的绝对值:

SELECT ABS(-3)
+---------+
| ABS(-3) |
+---------+
|       3 |
+---------+

字符函数

字符函数可以用来处理各种字符串类型的数据。

CONCAT()

CONCAT 的功能是 字符串连接

用法如下:

SELECT CONCAT('孙', '悟空')
+----------------------+
| CONCAT('孙', '悟空') |
+----------------------+
| 孙悟空               |
+----------------------+

一般很多国外的网站性和名都是分开存储的,在查询的时候就可以用 CONCAT 来连接。

下面是一张性和名分开存储的表格:

+------------+-----------+
| first_name | last_name |
+------------+-----------+
| 军         | 雷        |
| 永浩       | 罗        |
+------------+-----------+

下面用 CONCAT 来连接名和性:

SELECT CONCAT(last_name, first_name) AS name FROM user2
+--------+
| name   |
+--------+
| 雷军   |
| 罗永浩 |
+--------+

其中的 AS name 是给查询出来的数据取一个别名,所以查询出来的表头的字段就是 name

CONCAT_WS()

CONCAT_WS 的功能是 使用分隔符来连接字符串

用法如下:

SELECT CONCAT_WS('-', '中国', '北京')
+--------------------------------+
| CONCAT_WS('-', '中国', '北京') |
+--------------------------------+
| 中国-北京                      |
+--------------------------------+

第 1 个参数是分隔符,后面的参数就是要连接的字段。

LOWER()

LOWER 的功能是把字符 转换为 小写

SELECT LOWER('HTML')
+---------------+
| LOWER('HTML') |
+---------------+
| html          |
+---------------+

UPPER()

UPPER 的功能是把字符串 转换为 大写

SELECT UPPER('mit')
+--------------+
| UPPER('mit') |
+--------------+
| MIT          |
+--------------+

LEFT()

LEFT 的功能是 从左侧开始截取字符

下面截取 My Name is Mark 的前两个字符:

SELECT LEFT('My Name is Mark', 2)
+----------------------------+
| LEFT('My Name is Mark', 2) |
+----------------------------+
| My                         |
+----------------------------+

RIGHT()

LEFT 相反,从结尾开始截取字符

SELECT RIGHT('My Name is Mark', 4)
+-----------------------------+
| RIGHT('My Name is Mark', 4) |
+-----------------------------+
| Mark                        |
+-----------------------------+

LENGTH()

LENGTH 的功能是 获取字符串长度

SELECT LENGTH('My Name is Mark')
+---------------------------+
| LENGTH('My Name is Mark') |
+---------------------------+
|                        15 |
+---------------------------+

LTRIM()

LTRIM 的功能是 去除开头的空格

SELECT LTRIM('  Apple')
+------------------+
| LTRIM('  Apple') |
+------------------+
| Apple            |
+------------------+

RTRIM()

RTRIM 的功能是 去除结尾的空格

因为用法和 LTRIM 差不多,这里就不演示了。

REPLACE()

REPLACE 的功能是 字符串替换

下面把 Apple 中的 p 替换为 *

SELECT REPLACE('Apple', 'p', '*')
+----------------------------+
| REPLACE('Apple', 'p', '*') |
+----------------------------+
| A**le                      |
+----------------------------+

SUBSTRING()

SUBSTRING 的功能是 截取字符,您可以手动指定截取字符的起始位置和需要截取的字符数量。

下面从 My Name is Mark 的第 9 位开始截取两个字符:

SELECT SUBSTRING('My Name is Mark', 9, 2)
+------------------------------------+
| SUBSTRING('My Name is Mark', 9, 2) |
+------------------------------------+
| is                                 |
+------------------------------------+

相关文章: