Postgresql中的子字符串

Postgresql中的子字符串,sql,postgresql,substring,Sql,Postgresql,Substring,我有一个简短的问题。 我正在学习一些SQL练习,其中一个,我需要从街道名称中删除数字 例如: 克伦肖大道5026 S-应该是克伦肖 惠蒂埃大道2635号-应为惠蒂埃大道 308 WESTWOOD PLZ#1390L-应为WESTWOOD 威尔希尔大道1111号-应为威尔希尔大道 然后,处理上述地址的答案如下: substring(facility_address FROM '[\d]+\s?\w?\s([\w]+)\s?') 我想了解子字符串是如何工作的,它意味着什么de[\D]等

我有一个简短的问题。 我正在学习一些SQL练习,其中一个,我需要从街道名称中删除数字

例如:

  • 克伦肖大道5026 S-应该是克伦肖

  • 惠蒂埃大道2635号-应为惠蒂埃大道

  • 308 WESTWOOD PLZ#1390L-应为WESTWOOD

  • 威尔希尔大道1111号-应为威尔希尔大道

然后,处理上述地址的答案如下:

substring(facility_address FROM '[\d]+\s?\w?\s([\w]+)\s?')
我想了解子字符串是如何工作的,它意味着什么de[\D]等等

有人能解释一下吗?
真的非常感谢!:)

你应该仔细阅读正则表达式

“[\d]+\s?\w?\s([\w]+)\s?”
是一个正则表达式

我将尝试将其分解:

首先,这些是量词:

+
表示一个或多个

表示一个或无

现在是正则表达式:

[\d]+
匹配一个或多个数字。我认为这里实际上不需要方括号

\s?
可选地匹配空白字符(可选地表示它可能在那里,也可能不在那里)

\w?
可以选择匹配单词字符

\s
匹配空白字符,但这次它不是可选的,因为结尾没有


([\w]+)
匹配一个或多个单词字符。请注意括号,它表示所谓的“捕获组”。括号内的所有内容实际上都是由substring函数返回的。

您应该仔细阅读正则表达式

“[\d]+\s?\w?\s([\w]+)\s?”
是一个正则表达式

我将尝试将其分解:

首先,这些是量词:

+
表示一个或多个

表示一个或无

现在是正则表达式:

[\d]+
匹配一个或多个数字。我认为这里实际上不需要方括号

\s?
可选地匹配空白字符(可选地表示它可能在那里,也可能不在那里)

\w?
可以选择匹配单词字符

\s
匹配空白字符,但这次它不是可选的,因为结尾没有

([\w]+)
匹配一个或多个单词字符。请注意括号,它表示所谓的“捕获组”。括号内的所有内容实际上都由substring函数返回