sql 字符串函数
1. 前言
字符类型是一个十分重要的类型,因此 sql 提供了诸多便利的内置函数来供开发者使用。
本小节测试数据如下,请先在数据库中执行:
DROP TABLE IF EXISTS imooc_user;CREATE TABLE imooc_user( id int PRIMARY KEY, username varchar(), age int);INSERT INTO imooc_user(id,username,age)VALUES (,'peter',),(,'pedro',),(,'jerry',);
2. 实践
函数名 | 作用 |
---|---|
CONCAT | 拼接多个字符串 |
LENGTH | 得到字符长度,一个中文汉字算3个字符,数字和字母算1个字符 |
CHAR_LENGTH | 得到字符长度,中文汉字、数字和字母算1个字符 |
LOWER | 将英文字符串全部转为小写 |
UPPER | 将英文字符串全部转为大写 |
REPLACE | 替换字符串,接受3个参数,分别是原字符串,被替代字符串,替代字符串 |
SUBSTRING | 截取字符串,接受3个参数,分别是原字符串,开始截取的位置,截取的长度 |
2.1 例1 拼接用户名和年龄
通过CONCAT
,我们可以把 imooc_user 中的用户名和年龄拼起来当作简略的用户信息:
SELECT CONCAT(username,age) FROM imooc_user;
结果:
+----------------------+ | CONCAT(username,age) | +----------------------+ | peter18 | | pedro24 | | jerry22 | +----------------------+
2.2 例2 获得用户名长度
有时候,我们想要知道用户名的长度:
SELECT LENGTH(username) FROM imooc_user WHERE id=;
+------------------+ | LENGTH(username) | +------------------+ | 5 | +------------------+
如果,用户名含有中文,或者全是中文,那么我们就必须用CHAR_LENGTH
:
SELECT CHAR_LENGTH(username) FROM imooc_user WHERE id=;
+-----------------------+ | CHAR_LENGTH(username) | +-----------------------+ | 5 | +-----------------------+
2.3 例3 用户名大小写
我们想要得到全大写的用户名:
SELECT UPPER(username) FROM imooc_user;
+-----------------+ | UPPER(username) | +-----------------+ | PETER | | PEDRO | | JERRY | +-----------------+
当然也可以全小写,虽然现在已经是小写了:
SELECT LOWER(username) FROM imooc_user;
+-----------------+ | LOWER(username) | +-----------------+ | peter | | pedro | | jerry | +-----------------+
2.4 例4 替换用户名
通过REPLACE
我们可以替换用户名中的pe
为we
。
SELECT REPLACE(username,'pe','we') FROM imooc_user;
+-----------------------------+ | REPLACE(username,'pe','we') | +-----------------------------+ | weter | | wedro | | jerry | +-----------------------------+
2.5 例5 截取用户名
使用SUBSTRING
,我们可以获得用户名的前 3 个字符当作简称。
SELECT SUBSTRING(username, , ) FROM imooc_user;
+---------------------------+ | SUBSTRING(username, 1, 3) | +---------------------------+ | pet | | ped | | jer | +---------------------------+