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 表,包含以下数据:

employee_id first_name last_name
1 Alice Smith
2 Bob Johnson
3 Charlie Brown
字符串连接

查询每个员工的全名:

SELECT 
    employee_id, 
    CONCAT(first_name, ' ', last_name) AS full_name
FROM 
    employees;

结果:

employee_id full_name
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;

结果:

employee_id first_name length_in_bytes length_in_characters
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;

结果:

employee_id first_name upper_name lower_name
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;

结果:

employee_id first_name substring_name
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;

结果:

employee_id first_name replaced_name
1 Alice Alixe
2 Bob Bob
3 Charlie Chxrxlie
字符串比较

查询每个员工的名字是否等于 'Alice':

SELECT 
    employee_id, 
    first_name, 
    STRCMP(first_name, 'Alice') AS comparison_result
FROM 
    employees;

结果:

employee_id first_name comparison_result
1 Alice 0
2 Bob 1
3 Charlie 1
去除空格

假设有一个 employees 表,包含以下数据:(由于显示原因,以‘-’表示空格)

employee_id first_name last_name
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;

结果:

employee_id trimmed_first_name trimmed_last_name
1 Alice Smith
2 Bob Johnson
3 Charlie Brown
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务