我有一个地址
的数据库(Postgres 7.4)字段示例数据
address | zip
-----------------------+-------------+
123 main street | 12345
-----------------------+-------------+
3 where road | 12345
-----------------------+-------------+
South 3 where road | 12345
查询
SELECT *
FROM tbl
WHERE zip = 12345
AND address ILIKE '3%'
我得到了所有但我不想要123主要街道
SELECT *
FROM tbl
WHERE zip = 12345
AND address ILIKE '123%'
我得到了我想要的结果
我的问题是如何匹配地址的数字部分?
答案 0 :(得分:1)
试试这个:
SELECT substring(address, '^\\d+') AS heading_number
FROM tbl
WHERE zip = 12345
AND address ILIKE '3%'
从字符串的开头返回1位或更多位数
如果您希望字符串中的第一个数字序列而不是开头的序列,请忽略锚^
。例如:
SELECT substring('South 13rd street 3452435 foo', '\\d+');
阅读手册中的substring()和regular expressions 在更新的版本(8.0+)中,不要忘记使用escape string syntax这样:
SELECT substring('South 13rd street 3452435 foo', E'\\d+');