使用关系型数据库时,您常常需要处理杂乱的数据。其中最常见的挑战之一就是清洗和处理文本数据。幸运的是,SQL 提供了强大的字符串函数,能大幅提升这一过程的效率,为您节省时间与精力。
本文将带您了解最重要的 SQL 字符串函数,帮助您轻松清洗与处理文本数据。让我们开始吧!
什么是 SQL 字符串函数?
SQL 字符串函数是内置函数,用于处理并操作存储在数据库中的文本数据。常见的文本字段包括姓名、描述和地址等。
这些函数可用于完成多种任务,包括:
连接字符串
格式化文本
提取字符串的部分内容
在字符串中查找并替换特定文本
在 SQL 中连接字符串
我们可以使用函数 concat() 连接两个或多个字符串:
SELECT CONCAT( 'Street Roma' , ', ' , '72' , ', ' , 'Padova' ) AS full_address技术支持
输出如下:
full_address |
Street Roma, 72 , Padova| 技术支持
该函数常用于合并来自不同列的信息,例如姓名和地址。
作为替代,您也可以使用 CONCAT_WS() 函数:
SELECT CONCAT_WS( ',' , 'Street Roma' , '72' , 'Padova' ) as full_address技术支持
从语法上看,在需要用同一个分隔符连接两列以上的内容时,它更加简洁高效。
格式化文本
以下是一些用于调整文本的 SQL 字符串函数,可用于改变大小写、去除多余空格等。每个函数均附有其语法及对应说明。
函数语法
说明
LOWER(string)
将文本中的所有字符转换为小写
UPPER(string)
将文本中的所有字符转换为大写
TRIM(string, [character])
默认移除字符串左右两侧的空格;若指定特殊字符,则移除该字符
LTRIM(string, [character])
默认移除字符串左侧的空格;若指定特殊字符,则移除该字符
RTRIM(string, [character])
默认移除字符串右侧的空格;若指定特殊字符,则移除该字符
接下来通过示例来理解这些函数的用法。设想一种情况:您的邮箱字段中含有大写字符,而国家/地区缩写为小写,您希望修正这些列的格式。
SELECT
LOWER( '[email protected] ' ) AS email,
UPPER( 'it' ) AS country技术支持
输出如下:
email | country|
anonymous@gmail.com | IT | 技术支持
除了更改大小写,去除字符串前后的空格也很常见。用于此类操作的主要函数是 TRIM() (同时移除两侧空格)。另有 LTRIM() 和 RTRIM() 可分别移除左侧与右侧空格:
SELECT TRIM( ' Street Roma, 72 ' ) AS trimmed_address,
LTRIM( ' Street Roma, 72 ' ) AS ltrimmed_address,
RTRIM( ' Street Roma, 72 ' ) AS rtrimmed_address技术支持
查询返回如下结果:
trimmed_address| ltrimmed_address| rtrimmed_address|
Street Roma, 72 | Street Roma, 72 | Street Roma, 72 | 技术支持
从结果可以看出各函数之间的差异。此外,TRIM() 不仅能移除空格,还可移除其他特殊字符。例如,我们想清理电话字段,去掉加号:
SELECT TRIM( '++345' , '+' ) AS telephone技术支持
输出如下:
telephone|
345 | 技术支持
可以看到,电话号码已被完全清理干净。
提取文本
在连接和格式化字符串之后,接下来看看如何使用特殊的 SQL 函数 SUBSTRING() 来提取文本。通过不同例子来掌握这个函数:
SELECT
SUBSTRING( 'Antony' , 1 , 1 ) AS first_character,
SUBSTRING( 'Antony' , 1 , 3 ) AS first_3characters,
SUBSTRING( 'Antony' , 1 , 5 ) AS first_5characters技术支持
输出如下:
first_character| first_3characters| first_5characters|
A | Ant | Anton | 技术支持
我们还可以将此函数与前面函数结合使用:把首字母大写,其余字母转为小写,然后再将它们连接起来:
SELECT
LENGTH( 'antony' ) AS lenght_name,
SUBSTRING( UPPER( 'antony' ) , 1 , 1 ) AS first_character,
SUBSTRING( LOWER( 'antony' ) , 2 , LENGTH( 'antony' ) ) AS last_characters,
CONCAT( SUBSTRING( UPPER( 'antony' ) , 1 , 1 ) , SUBSTRING( LOWER( 'antony' ) ,
2 , LENGTH( 'antony' ) ) ) AS name技术支持
该查询返回如下结果:
lenght_name| first_character| LAST_characters| name |
6 | A | ntony | Antony| 技术支持
除了前述函数之外,您还会注意到 LENGTH() 函数可用于获取字符串长度。在此场景中,它有助于确定最后一个字符的索引。
在 SQL 中查找与替换字符串
我们来看看用于查找与替换字符串的几个主要函数:
函数语法
说明
REPLACE(string,x,y)
将字符串中的 x 值替换为 y 值
CHARINDEX(x,string)
查找 x 值在字符串中的位置
非常实用的一个函数是 REPLACE(),用于将字符串中的某个子串替换为另一个子串:
SELECT
'Street Roma - 32' AS address,
replace ( 'Street Roma - 32' , '-' , ',' ) AS cleaned_address技术支持
输出如下:
address | cleaned_address |
Street Roma - 32 | Street Roma , 32 | 技术支持
在此示例中,我们将地址中的短横线替换为逗号。我们还可以尝试找出该短横线在地址中的位置:
SELECT
'Street Roma - 32' AS address,
LENGTH( 'Street Roma - 32' ) AS length_address,
CHARINDEX( '-' , 'Street Roma - 32' ) AS location_dash技术支持
查询返回如下结果:
address | length_address| location_dash|
Street Roma - 32 | 16 | 13 | 技术支持
可以看到,符号 - 位于地址的第 13 个位置,几乎在字符串末尾。
结语
熟练掌握这些 SQL 字符串函数,能够显著提升数据清洗效率。当然,本文并未涵盖所有函数,而是精选了最重要的一部分。并非所有 SQL 函数在各数据库中都适用,具体情况取决于您所使用的数据库类型。例如,在 MySQL 中可以用 LOCATE() 替代 CHARINDEX。
若想练习这些函数,您可以查看我们的 Reporting in SQL 课程。它能帮助您成为数据清洗与复杂报表构建的高手。我们也推荐 SQL Fundamentals 技能路径,覆盖 SQL 的各项核心要点。
使用关系型数据库时,您常常需要处理杂乱的数据。其中最常见的挑战之一就是清洗和处理文本数据。幸运的是,SQL 提供了强大的字符串函数,能大幅提升这一过程的效率,为您节省时间与精力。
本文将带您了解最重要的 SQL 字符串函数,帮助您轻松清洗与处理文本数据。让我们开始吧!
什么是 SQL 字符串函数?
SQL 字符串函数是内置函数,用于处理并操作存储在数据库中的文本数据。常见的文本字段包括姓名、描述和地址等。
这些函数可用于完成多种任务,包括:
在 SQL 中连接字符串
我们可以使用函数
concat()连接两个或多个字符串:输出如下:
该函数常用于合并来自不同列的信息,例如姓名和地址。
作为替代,您也可以使用
CONCAT_WS()函数:从语法上看,在需要用同一个分隔符连接两列以上的内容时,它更加简洁高效。
格式化文本
以下是一些用于调整文本的 SQL 字符串函数,可用于改变大小写、去除多余空格等。每个函数均附有其语法及对应说明。
函数语法
说明
将文本中的所有字符转换为小写
将文本中的所有字符转换为大写
默认移除字符串左右两侧的空格;若指定特殊字符,则移除该字符
默认移除字符串左侧的空格;若指定特殊字符,则移除该字符
默认移除字符串右侧的空格;若指定特殊字符,则移除该字符
接下来通过示例来理解这些函数的用法。设想一种情况:您的邮箱字段中含有大写字符,而国家/地区缩写为小写,您希望修正这些列的格式。
输出如下:
除了更改大小写,去除字符串前后的空格也很常见。用于此类操作的主要函数是
TRIM()(同时移除两侧空格)。另有LTRIM()和RTRIM()可分别移除左侧与右侧空格:查询返回如下结果:
从结果可以看出各函数之间的差异。此外,
TRIM()不仅能移除空格,还可移除其他特殊字符。例如,我们想清理电话字段,去掉加号:输出如下:
可以看到,电话号码已被完全清理干净。
提取文本
在连接和格式化字符串之后,接下来看看如何使用特殊的 SQL 函数 SUBSTRING() 来提取文本。通过不同例子来掌握这个函数:
输出如下:
我们还可以将此函数与前面函数结合使用:把首字母大写,其余字母转为小写,然后再将它们连接起来:
该查询返回如下结果:
除了前述函数之外,您还会注意到
LENGTH()函数可用于获取字符串长度。在此场景中,它有助于确定最后一个字符的索引。在 SQL 中查找与替换字符串
我们来看看用于查找与替换字符串的几个主要函数:
函数语法
说明
将字符串中的 x 值替换为 y 值
查找 x 值在字符串中的位置
非常实用的一个函数是
REPLACE(),用于将字符串中的某个子串替换为另一个子串:输出如下:
在此示例中,我们将地址中的短横线替换为逗号。我们还可以尝试找出该短横线在地址中的位置:
查询返回如下结果:
可以看到,符号
-位于地址的第 13 个位置,几乎在字符串末尾。结语
熟练掌握这些 SQL 字符串函数,能够显著提升数据清洗效率。当然,本文并未涵盖所有函数,而是精选了最重要的一部分。并非所有 SQL 函数在各数据库中都适用,具体情况取决于您所使用的数据库类型。例如,在 MySQL 中可以用
LOCATE()替代CHARINDEX。若想练习这些函数,您可以查看我们的 Reporting in SQL 课程。它能帮助您成为数据清洗与复杂报表构建的高手。我们也推荐 SQL Fundamentals 技能路径,覆盖 SQL 的各项核心要点。