在 SQL 中,正则表达式是一种强大的工具,用于匹配相应的字符串模式。SQL 支持的正则表达式语法因数据库而异,下面是一些常用的正则表达式元字符:
在 SQL 中,使用正则表达式的函数包括:
下面是一些使用正则表达式的例子:
当然,以下是一个使用正则表达式函数的例子,假设有一个表格名为 users,包含以下列:
id | name | |
---|---|---|
1 | John Smith | john.smith@example.com |
2 | Jane Doe | jane.doe@example.com |
3 | Bob Johnson | bjohnson@example.com |
4 | Alice Williams | awilliams@example |
现在我们想要从 name 列中提取每个产品的品牌名称,以及从 description 列中删除所有的尺寸信息(即屏幕大小)。我们可以使用 REGEXP_SUBSTR 和 REGEXP_REPLACE 函数来实现:
因此,用这个正则表达式模式来匹配一个字符串,它将尝试从字符串的开头开始查找一个或多个非空格字符,直到遇到一个空格字符或到达字符串的结尾为止。这个正则表达式模式可以用于从一个包含多个单词的字符串中提取第一个单词,因为单词通常以一个或多个非空格字符开头。
例如,如果我们有一个字符串 "apple iphone 12",使用 '^[^ ]+' 正则表达式模式来匹配它,它将返回 "apple",因为它是这个字符串的开头部分,并且以空格字符结尾。
提取品牌名称:
SELECT REGEXP_SUBSTR(name, '^[^ ]+') AS brand FROM products;这将输出以下结果:
brand |
---|
Apple |
Samsung |
OnePlus |
删除尺寸信息:
SELECT REGEXP_REPLACE(description, '[0-9.]+-inch', '') AS description_without_size FROM products;这将输出以下结果:
description_without_size |
---|
The latest iPhone with a screen |
The latest Samsung phone with a screen |
The latest Pixel phone with a screen |
The latest OnePlus phone with a screen |
'^[^ ]+' 是一个正则表达式模式,用于匹配以一个或多个非空格字符开头的字符串。它由以下几个部分组成: