gpt4 book ai didi

postgresql - 之间的 Postgres varchar 字段

转载 作者:行者123 更新时间:2023-11-29 14:03:25 26 4
gpt4 key购买 nike

我有一个地址表,其中包含邮政编码字段,类型为 VARCHAR。我需要使用邮政编码范围从该表中选择所有地址。如果我使用下一个代码:

select * from address where cast(zip as bigint) between 90210 and 90220

我在无法将邮政编码转换为 bigint 的字段上收到错误。

我该如何解决这个问题?

最佳答案

如果 zip 值为数字,则派生一个 bigint 版本的 zip 列,否则为 null,然后对其进行测试。

好吧

select * from address
where case when zip ~ '^[0-9]+$' then cast(zip as bigint) end between 90210 and 90220

为了提高这个查询的效率,你可以在这个表达式上创建一个索引:

create index address_zip_idx on address(cast(zip as bigint)) where zip ~ '^[0-9]+$';
-- this query can now use that index
select * from address
where zip ~ '^[0-9]+$' and cast(zip as bigint) between 90210 and 90220;

关于postgresql - 之间的 Postgres varchar 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3015897/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com