如何在 PostgreSQL 中编写这个 MySQL 位?
Posted
技术标签:
【中文标题】如何在 PostgreSQL 中编写这个 MySQL 位?【英文标题】:How to write this MySQL bit in PostgreSQL? 【发布时间】:2012-11-10 10:59:50 【问题描述】:我在看这个tidbit from MaxMind
SELECT ip_country
FROM geoip
WHERE
INET_ATON('xxx.xx.xxx.xxx') BETWEEN begin_ip_num AND end_ip_num
LIMIT 1
我尝试了几种方法,但 BETWEEN 似乎不像我认为它在 postgresql 中那样做。
如您所见,我正在尝试根据 IP 确定国家/地区。这里有几行,以防万一这可以更容易地完成:
"223.204.0.0","223.207.255.255","3754688512","3754950655","TH","泰国""223.208.0.0","223.215.255.255","3754950656","3755474943", "CN","中国" "223.216.0.0","223.219.255.255","3755474944","3755737087","JP","日本"
postgres 版本是 9.1 - 忘记添加了。
【问题讨论】:
不言而喻,我们需要表定义来确定。在使用时添加您的 PostgreSQL 版本。 【参考方案1】:数据类型inet
可能会解决您的问题。只要列类型是text
或varchar
,数据就会根据您的collation 像文本一样排序——这也会影响BETWEEN
。
还取决于 PostgreSQL 的版本(排序规则支持是后期添加的)。只要您不提供基本信息,这都是猜测。
【讨论】:
以上是关于如何在 PostgreSQL 中编写这个 MySQL 位?的主要内容,如果未能解决你的问题,请参考以下文章