Pat*_*len 2 sql postgresql range-types amazon-redshift
我认为这可能是一个常见的问题,可能无法解决每个工具.现在我们正在尝试使用amazons Redshift.我们现在唯一的问题是我们正在尝试查找IP地址的邮政编码.我们将IP连接到城市的表是IP转换为整数的范围.
例:
Start IP | End IP | City
| 123123 | 123129 | Rancho Cucamonga|
Run Code Online (Sandbox Code Playgroud)
我在intip> = startip和intip <endip上尝试了明显的内连接.
有谁知道这样做的好方法?
从PostgreSQL 9.2开始,您可以使用其中一种新的范围类型,int4range或者int8range.
CREATE TABLE city (
city_id serial PRIMARY KEY
,ip_range int4range
,city text
,zip text
);
Run Code Online (Sandbox Code Playgroud)
然后您的查询可能只是:
SELECT c.zip
FROM city_ip
WHERE $intip <@ i.ip_range;
Run Code Online (Sandbox Code Playgroud)
<@.. "元素包含在"
要使大表快速使用GiST索引:
CREATE INDEX city_ip_range_idx ON city USING gist (ip_range);
Run Code Online (Sandbox Code Playgroud)
但我怀疑亚马逊Redshift是最新的.我们最近有其他人有问题:
在redshift中使用sql函数generate_series()