SQL文本函数
文本函数
在 SQL 中,文本函数用于处理和操作字符串数据。这些函数可以帮助你执行各种字符串相关的操作,如连接字符串、提取子字符串、转换大小写等。以下是一些常用的文本函数及其用法。
1. 字符串连接
CONCAT(string1, string2, ...):将多个字符串连接成一个字符串。
2. 字符串长度
LENGTH(string):返回字符串的长度(以字节为单位)。CHAR_LENGTH(string):返回字符串的长度(以字符为单位)。
对于单字节字符(如 ASCII 字符),LENGTH 和 CHAR_LENGTH 的结果是相同的。但对于多字节字符(如 UTF-8 编码的 Unicode 字符),LENGTH 会返回更多的字节数。
在处理多字节字符时,建议使用 CHAR_LENGTH,因为它能更准确地反映字符串的字符数。
3. 字符串大小写转换
UPPER(string):将字符串转换为大写。LOWER(string):将字符串转换为小写。
4. 字符串截取
SUBSTRING(string, start, length):从字符串中提取子字符串。
5. 字符串替换
REPLACE(string, search, replace):在字符串中查找并替换指定的子字符串。
6. 去除空格
TRIM(string):去除字符串两端的空格。LTRIM(string):去除字符串左端的空格。RTRIM(string):去除字符串右端的空格。
7. 字符串比较
STRCMP(string1, string2):比较两个字符串,返回 0 表示相等,返回负数表示string1小于string2,返回正数表示string1大于string2。
示例:
假设有一个 employees 表,包含以下数据:
| 1 | Alice | Smith |
| 2 | Bob | Johnson |
| 3 | Charlie | Brown |
字符串连接
查询每个员工的全名:
SELECT
employee_id,
CONCAT(first_name, ' ', last_name) AS full_name
FROM
employees;
结果:
| 1 | Alice Smith |
| 2 | Bob Johnson |
| 3 | Charlie Brown |
字符串长度
查询每个员工的名字长度:
SELECT
employee_id,
first_name,
LENGTH(first_name) AS length_in_bytes,
CHAR_LENGTH(first_name) AS length_in_characters
FROM
employees;
结果:
| 1 | Alice | 5 | 5 |
| 2 | Bob | 3 | 3 |
| 3 | Charlie | 7 | 7 |
字符串大小写转换
查询每个员工的名字的大写和小写形式:
SELECT
employee_id,
first_name,
UPPER(first_name) AS upper_name,
LOWER(first_name) AS lower_name
FROM
employees;
结果:
| 1 | Alice | ALICE | alice |
| 2 | Bob | BOB | bob |
| 3 | Charlie | CHARLIE | charlie |
字符串截取
查询每个员工名字的前 3 个字符:
SELECT
employee_id,
first_name,
SUBSTRING(first_name, 1, 3) AS substring_name
FROM
employees;
结果:
| 1 | Alice | Ali |
| 2 | Bob | Bob |
| 3 | Charlie | Cha |
字符串替换
查询每个员工名字中的 'a' 替换为 'x':
SELECT
employee_id,
first_name,
REPLACE(first_name, 'a', 'x') AS replaced_name
FROM
employees;
结果:
| 1 | Alice | Alixe |
| 2 | Bob | Bob |
| 3 | Charlie | Chxrxlie |
字符串比较
查询每个员工的名字是否等于 'Alice':
SELECT
employee_id,
first_name,
STRCMP(first_name, 'Alice') AS comparison_result
FROM
employees;
结果:
| 1 | Alice | 0 |
| 2 | Bob | 1 |
| 3 | Charlie | 1 |
去除空格
假设有一个 employees 表,包含以下数据:(由于显示原因,以‘-’表示空格)
| 1 | --Alice | Smith- |
| 2 | Bob | --Johnson |
| 3 | Charlie | Brown |
查询每个员工的名字和姓氏,去除两端的空格:
SELECT
employee_id,
TRIM(first_name) AS trimmed_first_name,
TRIM(last_name) AS trimmed_last_name
FROM
employees;
结果:
| 1 | Alice | Smith |
| 2 | Bob | Johnson |
| 3 | Charlie | Brown |
叮咚买菜工作强度 218人发布