sql – 仅当字符串以数字值开头时才选择字符串的数字部分
发布时间:2020-12-12 06:49:51 所属栏目:MsSql教程 来源:网络整理
导读:这只给我最后一个字符(数字),但我需要整个数字字符串 SELECT substring('123 Main Street' FROM '%#"[0-9]#"%' FOR '#') 结果:3 期待:123 这给了我相同的结果,但我需要它返回一个空白值: SELECT substring('Main 123 Street' FROM '%#"[0-9]#"%' FOR '#')
这只给我最后一个字符(数字),但我需要整个数字字符串
SELECT substring('123 Main Street' FROM '%#"[0-9]#"%' FOR '#') >结果:3 这给了我相同的结果,但我需要它返回一个空白值: 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 更新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]匹配单个字符.(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |