【问题标题】:How to write this MySQL bit in PostgreSQL?如何在 PostgreSQL 中编写这个 MySQL 位?
【发布时间】: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 版本。

标签: mysql postgresql heroku geolocation


【解决方案1】:

数据类型inet 可能会解决您的问题。只要列类型是textvarchar,数据就会根据您的collation 像文本一样排序——这也会影响BETWEEN

还取决于 PostgreSQL 的版本(排序规则支持是后期添加的)。只要您不提供基本信息,这都是猜测。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    • 2016-01-12
    • 2016-07-17
    • 2019-09-21
    • 2012-02-03
    • 1970-01-01
    相关资源
    最近更新 更多