# MySQL教程 - 10 函数

SQL 提供了一些内置的函数,可以让我们在查询和更新数据的时候,对数据进行一些处理。例如将字符串转换为大写、去掉前后空格等操作,还包括一些日期、数值等处理。

常用的函数主要分为三类:

  • 文本处理函数
  • 日期和时间处理函数
  • 数值处理函数

# 10.1 文本处理函数

常用的文本函数如下:

函数 功能描述
CONCAT(s1, s2, ...) 拼接字符串(参数是任意多个
LENGTH(s) 返回字符串的字节长度(按字符集不同)
UPPER(s) 转为大写
LOWER(s) 转为小写
SUBSTRING(s, pos, len) 从字符串中提取子串,pos 是其实位置,从 1 开始len 表示长度
REPLACE(s, old, new) 替换子字符串
TRIM([remstr] FROM s) 去掉头尾字符,remstr 可以省略,TRIM(str) 默认为去掉前后空格
LOCATE(substr, s) 查找子串首次出现的位置
REVERSE(s) 反转字符串
LPAD(str, length, pad_str) 左填充,用字符串 pad_strstr 的左边进行填充,直到 str 的长度达到 length
RPAD(str, length, pad_str) 右填充,用字符串 pad_strstr 的右边进行填充,直到 str 的长度达到 length

上面列出了常用的函数,可以按照上面的例子执行一下,看看效果,使用 SELECT 执行即可:

SELECT CONCAT('My', 'SQL');    									-- 执行结果:MySQL
SELECT LENGTH('abc');    												-- 执行结果:3
SELECT UPPER('mysql');    											-- 执行结果:MYSQL
SELECT LOWER('MYSQL');    											-- 执行结果:mysql
SELECT SUBSTRING('abcdef', 2, 3);    						-- 执行结果:bcd
SELECT REPLACE('abcde', 'bc', 'xy');    				-- 执行结果:axyde
SELECT TRIM(' hello ');    											-- 去掉前后空格,执行结果:hello
SELECT TRIM('x' FROM 'xxxHello, World!xxx');		-- 执行结果:Hello, World!
SELECT LOCATE('b', 'abcde');   				  				-- 执行结果:2
SELECT REVERSE('abc');    											-- 执行结果:cba
SELECT LPAD('1', 5, '0');   				  					-- 执行结果:00001
SELECT RPAD('1', 5, '0');    										-- 执行结果:10000
1
2
3
4
5
6
7
8
9
10
11
12

所以我们可以在操作数据库数据的时候,使用上面的函数。

举个例子:

内容未完......