Postgresql 中的子串
Substring in Postgresql
我有一个简短的问题。
我正在研究一些 SQL 练习,其中之一,我需要从街道名称中删除号码。
例如:
5026 S CRENSHAW BLVD - 应该是 CRENSHAW
2635 WHITTIER BLVD - 应该是 WHITTIER
308 WESTWOOD PLZ # 1390L - 应该是 WESTWOOD
1111 WILSHIRE BLVD - 应该是 WILSHIRE
那么,处理上面地址的答案是这样的:
substring(facility_address FROM '[\d]+\s?\w?\s([\w]+)\s?')
我想了解子字符串是如何工作的,它是什么意思 de [\D] 等等
谁能解释一下?
真的非常感谢! :)
您应该仔细阅读正则表达式。
'[\d]+\s?\w?\s([\w]+)\s?'
是正则表达式。
我会尝试分解它:
首先,这些是量词:
+
表示一个或多个
?
表示一或none
现在是正则表达式:
[\d]+
匹配一位或多位数字。我认为这里实际上不需要方括号。
\s?
可选地匹配一个空白字符(可选地意味着它可能存在也可能不存在)
\w?
可选地匹配一个单词字符
\s
匹配一个空白字符,但这次不是可选的,因为最后没有?
([\w]+)
匹配一个或多个单词字符。请注意括号,它表示所谓的“捕获组”。括号内的所有内容实际上都是由子字符串函数返回的。
我有一个简短的问题。 我正在研究一些 SQL 练习,其中之一,我需要从街道名称中删除号码。
例如:
5026 S CRENSHAW BLVD - 应该是 CRENSHAW
2635 WHITTIER BLVD - 应该是 WHITTIER
308 WESTWOOD PLZ # 1390L - 应该是 WESTWOOD
1111 WILSHIRE BLVD - 应该是 WILSHIRE
那么,处理上面地址的答案是这样的:
substring(facility_address FROM '[\d]+\s?\w?\s([\w]+)\s?')
我想了解子字符串是如何工作的,它是什么意思 de [\D] 等等
谁能解释一下? 真的非常感谢! :)
您应该仔细阅读正则表达式。
'[\d]+\s?\w?\s([\w]+)\s?'
是正则表达式。
我会尝试分解它:
首先,这些是量词:
+
表示一个或多个
?
表示一或none
现在是正则表达式:
[\d]+
匹配一位或多位数字。我认为这里实际上不需要方括号。
\s?
可选地匹配一个空白字符(可选地意味着它可能存在也可能不存在)
\w?
可选地匹配一个单词字符
\s
匹配一个空白字符,但这次不是可选的,因为最后没有?
([\w]+)
匹配一个或多个单词字符。请注意括号,它表示所谓的“捕获组”。括号内的所有内容实际上都是由子字符串函数返回的。