Postgresql 中的子串

Substring in Postgresql

我有一个简短的问题。 我正在研究一些 SQL 练习,其中之一,我需要从街道名称中删除号码。

例如:

那么,处理上面地址的答案是这样的:

substring(facility_address FROM '[\d]+\s?\w?\s([\w]+)\s?')

我想了解子字符串是如何工作的,它是什么意思 de [\D] 等等

谁能解释一下? 真的非常感谢! :)

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

'[\d]+\s?\w?\s([\w]+)\s?'是正则表达式。

我会尝试分解它:

首先,这些是量词:

+表示一个或多个

?表示一或none

现在是正则表达式:

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

\s? 可选地匹配一个空白字符(可选地意味着它可能存在也可能不存在)

\w? 可选地匹配一个单词字符

\s匹配一个空白字符,但这次不是可选的,因为最后没有?

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