![641e5fd5689108a2fbdd0e8ee5787179.png](https://i-blog.csdnimg.cn/blog_migrate/04651cbebf7a90deee6aad68258a718d.jpeg)
在前面若干章节中,我们介绍了SQL的基础与高阶语法,接下来,我们将分四个章节,介绍MySQL中常见的函数应用,大致分为如下几个章节:
- MySQL 字符串函数
- MySQL 数字函数
- MySQL 日期函数
- MySQL 高级函数
本文将主要介绍MySQL 字符串函数。
演示数据
我们通过创建 Student_Information表,并向该表中插入以下数据。
建表SQL语句如下:
![e8e8481807f9e0f808915dbed2206c88.png](https://i-blog.csdnimg.cn/blog_migrate/e4dd4224b18910cdce519656777832dd.jpeg)
插入SQL语句如下:
![002dd49d5a5b89d058da92ae61c6d04b.png](https://i-blog.csdnimg.cn/blog_migrate/31eae89705f2eb94a000e3fd9c6994de.jpeg)
表数据如下:
![9da20dfefbec71cf17bb4996fc8b4b62.png](https://i-blog.csdnimg.cn/blog_migrate/642289d33186f3be30b8bd84036ec11e.jpeg)
ASCII(s) 函数
返回字符串 s 的第一个字符的 ASCII 码,示例如下:
![acd07faf0c85924f58e5f58064c621a2.png](https://i-blog.csdnimg.cn/blog_migrate/2a3ba55ccee0b5e6af54cda8b7b82082.jpeg)
如上,返回 sname 字段第一个字母的 ASCII 码。
CHAR_LENGTH(s) 函数
返回字符串 s 的字符数量,示例如下:
![437772e162c50b93f186cf343803551a.png](https://i-blog.csdnimg.cn/blog_migrate/3c9272f9ed02aede02f684ebf9ffb383.jpeg)
如上,返回 sname 字段的字符数量。
CONCAT(s1, s2, ...sn) 函数
将字符串 s1,s2...,sn 连接为一个字符串,示例如下:
![af9cdb8ebc5c8829a3e2e40dfb1fa957.png](https://i-blog.csdnimg.cn/blog_migrate/cd8c2ee810c6389b099d88a82230e79b.jpeg)
如上,我们将 sname, phone 字段合并为一个字符串。
CONCAT_WS(sep, s1,s2...sn) 函数
将 s1,s2...,sn 连接成字符串,并以sep字符作为分隔符,示例如下:
![af4f0ab926b92d57013411ff5da6a230.png](https://i-blog.csdnimg.cn/blog_migrate/3b9800f3654999ac301deaed8c1a09aa.jpeg)
如上,我们将 sname, phone 字段合并为一个字符串。并使用 '-' 作为分隔符。
FIELD(s,s1,s2...) 函数
返回第一个字符串 s 在字符串列表 (s1,s2...) 中的位置,示例如下:
![efc478fde6eb9be1c0b282002d78d215.png](https://i-blog.csdnimg.cn/blog_migrate/8035efa338e00d2783be1ede3c74124f.jpeg)
如上,我们返回字符串 Deja 在列表值 'Devin', 'Anna','Deja' 中的位置为 3 。
FIND_IN_SET(s1,s2) 函数
解析逗号分隔的 s2 列表,返回在字符串 s2 中与 s1 匹配的字符串的位置,示例如下:
![61d6d868e50d5469c3f8274748c2684f.png](https://i-blog.csdnimg.cn/blog_migrate/d7c207d6a0f25f3f8ebe3edf37860867.jpeg)
如上,返回字符串 Devin 在指定字符串 Devin,19825011315 中的位置为 1 。
LOCATE(s1, s)函数
返回 s1 在字符串 s 的第一个出现的位置,示例如下:
![001fb534e9bd5d07407785dd7cfb8e69.png](https://i-blog.csdnimg.cn/blog_migrate/415420905dc62caa33d5a55e6558bf3f.jpeg)
如上,获取 tiao 在字符串 toutiao 中的第一次出现的位置为 4。
FORMAT(n,d)函数
将数字 n 进行格式化, 如 "#,###,###.##"。 将 n 四舍五入并保留到小数点后 d 位,示例如下:
![2435077188899bacfbffa121a85b96e0.png](https://i-blog.csdnimg.cn/blog_migrate/6f8cee9a3866120e924de17b23a774f6.jpeg)
如上,我们将 17758521.1314 格式化为 17,758,521.13 。
INSERT(s1, x, len, s2) 函数
字符串 s2 替换 s1 的第 x 位置开始,长度为 len 的字符串,示例如下:
![d4adac6ac49380a6aee848d4ec2c2d99.png](https://i-blog.csdnimg.cn/blog_migrate/fb91fea39be46752c3df8833535c907f.jpeg)
如上,我们从字符串 toutiao.com 第1个位置开始的 7 个字符替换为 testops。
LEFT(s, n) 函数
返回字符串 s 的前 n 个字符,示例如下:
![0774abb2c9abec974a767da52c771561.png](https://i-blog.csdnimg.cn/blog_migrate/cafc7d49da0528a8ab096e8b59f2720e.jpeg)
如上,返回 phone 字段的前 3 个字符。
RIGHT(s, n) 函数
返回字符串 s 的后 n 个字符,示例如下:
![8d58e40b9654d1c5f582375804a01b94.png](https://i-blog.csdnimg.cn/blog_migrate/c616a9f13b79f690cd7021f5eee8ef78.jpeg)
如上,返回 phone 字段的后 4 个字符。
MID(s, n, len) 函数
从字符串 s 的第 n 位置截取长度为 len 的子字符串,示例如下:
![eee7d50e2b38913a2728a6f23cde6042.png](https://i-blog.csdnimg.cn/blog_migrate/7c3c0b7d49f981e9ee0f927fe39a21d6.jpeg)
如上,从 phone 字段的第 7 个位置开始截取长度为 4 个字符的字符串。
LOWER(s) 函数
将字符串 s 的所有字母变成小写字母,示例如下:
![35b63f7e79c73c66fb3e7a7e946fe0b7.png](https://i-blog.csdnimg.cn/blog_migrate/0d584fbdce95d61237fe52a63bf82d09.jpeg)
如上,字符串 sname 字段转换为纯小写。
UPPER(s) 函数
将字符串 s 转换为大写,示例如下:
![1c2d8144824aafdab879fa43416a34df.png](https://i-blog.csdnimg.cn/blog_migrate/b0c3778e4df575e84f5c57ddfca329ed.jpeg)
如上,将 sname 字段转换为大写。
LPAD(s1, len, s2) 函数
在字符串 s1 的最左边开始填充字符串 s2,并使字符串长度达到 len,示例如下:
![6c943dcc29410a2e05e189c145bec5e0.png](https://i-blog.csdnimg.cn/blog_migrate/0c55c0ba48e88f164e9c8a06635d1d64.jpeg)
如上,将字符串 '-' 填充到 sname 字段的最左边,并使字段长度满足 6 个字符:
RPAD(s1, len, s2) 函数
在字符串 s1 的结尾处添加字符串 s2,使字符串的长度达到 len,示例如下:
![a2b364e9b3ec5e5471a3c9400ac64942.png](https://i-blog.csdnimg.cn/blog_migrate/1c178619013ed13ed2c136d4bb07fb86.jpeg)
如上,将字符串 '-' 填充到 sname 字段的最右边,并使字段长度满足 6 个字符:
LTRIM(s) 函数
去掉字符串 s 左边的空格,示例如下:
![3baf7966f14483cdea9d7b47fa862c8b.png](https://i-blog.csdnimg.cn/blog_migrate/a515b92ad23364d315d96ad89599ff9b.jpeg)
如上,去掉字符串 ' toutiao.com' 左边的空格。
RTRIM(s) 函数
去掉字符串 s 右边的空格,示例如下:
![42639e952ebfda47200aad50bb56920e.png](https://i-blog.csdnimg.cn/blog_migrate/326970e26d9df836880fab78af754903.jpeg)
如上,去掉字符串 'toutiao.com ' 的右边的空格。
TRIM(s) 函数
去掉字符串 s 左右两边的空格,示例如下:
![8fead283243e2b22ab66a8d18bf67b0a.png](https://i-blog.csdnimg.cn/blog_migrate/ff5a9e16da1de96c0b48bb6069994ad2.jpeg)
如上,去掉字符串 ' toutiao.com ' 的左右的空格:
REPEAT(s, n) 函数
将字符串 s 重复 n 次,示例如下:
![59cc6004f327b01a8fbf163092f049bf.png](https://i-blog.csdnimg.cn/blog_migrate/92ee421d8ce59068d913b554f4cb95e0.jpeg)
如上,将字符串 'testops' 重复 2 次。
REPLACE(s, s1, s2) 函数
使用字符串 s2 替代字符串 s 中的字符串 s1,示例如下:
![4acdb5d3e32ebdea7cdec287314ec6ff.png](https://i-blog.csdnimg.cn/blog_migrate/ecddafb4e01dbe4a57de462737b164e3.jpeg)
如上,将字符串 toutiao.com 中的字符 toutiao 替换为字符 testops。
REVERSE(s) 函数
将字符串 s 的顺序反过来,示例如下:
![e0ec807aeb7c938a15a17d5b5531e2bf.png](https://i-blog.csdnimg.cn/blog_migrate/b9e775462acdab825abfb5f002142fc1.jpeg)
如上,将字符串 toutiao.com 的顺序反过来。
STRCMP(s1, s2) 函数
比较字符串 s1 和 s2,若 s1 与 s2 相等返回 0 ,若 s1 > s2 返回 1,若 s1
![031519e0204a61f583a15f61d9acb490.png](https://i-blog.csdnimg.cn/blog_migrate/2081b925dc9678f4926ff0dbfcbc9f18.jpeg)
如上 ,比如 "testops" 与 "testops",因相等则返回 0。
![5423ce471d21eeef5323a9d0c8b8a728.png](https://i-blog.csdnimg.cn/blog_migrate/23df7e7927dc7b726a5b548315e8089b.jpeg)