Postgresql中的子字符串
我有一个简短的问题。 我正在学习一些SQL练习,其中一个,我需要从街道名称中删除数字 例如: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]等
- 克伦肖大道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函数返回