提取字段的第一个数字部分

发布于 2024-12-15 14:41:13 字数 583 浏览 0 评论 0原文

我有一个用于地址的数据库(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%'

我得到了我想要的结果

我的问题是如何匹配地址的数字部分?

I have a database (Postgres 7.4) field for address

Example Data

    address            |    zip
-----------------------+-------------+
123 main street        |    12345
-----------------------+-------------+
3 where road           |    12345
-----------------------+-------------+
South 3 where road     |    12345

The queries

SELECT *
FROM tbl
WHERE zip = 12345
AND address ILIKE '3%'

I get all but I don't want 123 main street

SELECT *
FROM tbl
WHERE zip = 12345
AND address ILIKE '123%'

I get the results I want

My question is how do I just match the numeric part of the address?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不爱素颜 2024-12-22 14:41:13
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()正则表达式手册。
在较新的版本(8.0+,standard_conforming_strings = on)中,使用 转义字符串语法如下所示:

SELECT substring('South 13rd street 3452435 foo', E'\\d+');

或者只是:

SELECT substring('South 13rd street 3452435 foo', '\d+');
SELECT substring(address, '^\\d+') AS heading_number
FROM   tbl
WHERE  zip = 12345
AND    address ILIKE '3%'

Returns 1 or more digits from the start of the string.
Leave out the anchor ^ if you want the first sequence of digits in the string instead of the sequence at the start. Example:

SELECT substring('South 13rd street 3452435 foo', '\\d+');

Read about substring() and regular expressions in the manual.
In more recent versions (8.0+, with standard_conforming_strings = on), use escape string syntax like this:

SELECT substring('South 13rd street 3452435 foo', E'\\d+');

Or just:

SELECT substring('South 13rd street 3452435 foo', '\d+');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文