这只给我最后一个字符(数字),但我需要整个数字字符串
SELECT substring('123 Main Street' FROM '%#"[0-9]#"%' FOR '#')
>结果:3
>期待:123
这给了我相同的结果,但我需要它返回一个空白值:
SELECT substring('Main 123 Street' FROM '%#"[0-9]#"%' FOR '#')
>结果:3
>期待:
注意:Postgres 7.4
有用的链接:http://www.postgresql.org/docs/7.4/static/functions-matching.html
更新:
SELECT substring('Main 123 Street' FROM '[0-9]+') SELECT substring('123 Main Street' FROM '[0-9]+')
>现在两人都返回:123
>仍需要跳过或返回完整字符串:’Main 123 Street’
更新2:
几乎拥有它:
如果它不以数值开头,这给了我想要的结果:
SELECT COALESCE(substring('Main 123 Street' FROM '[0-9]*') || 'Main 123 Street',''),substring('Main 123 Street' FROM '[0-9]*')
但这给了我两个,我只想要第二个条件:
SELECT COALESCE(substring('123 Main Street' FROM '[0-9]*') || '123 Main Street',substring('123 Main Street' FROM '[0-9]*')
我知道了!!!感谢所有发布的人:
SELECT CASE WHEN COALESCE(substring(db_column FROM '[0-9]*'),db_column) != '' THEN COALESCE(substring(db_column FROM '[0-9]*'),db_column) ELSE db_column END AS addsress_string FROM db_table
解决方法
我不知道postgresql正则表达式语法,但在大多数正则表达式中你会写[0-9].没有量词,[0-9]匹配单个字符.
原文地址:https://www.jb51.cc/mssql/77629.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。