-1

私は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","375547CN4943" ,"中国" "223.216.0.0","223.219.255.255","3755474944","3755737087","JP","日本"

postgres のバージョンは 9.1 です - これを追加するのを忘れていました。

4

1 に答える 1

3

データ型inetはおそらくあなたの問題を解決するでしょう。text列の型がorである限り、データは照合varcharに従ってテキストのように並べられます。これは にも影響します。BETWEEN

PostgreSQL のバージョンにも依存します (照合サポートは最近追加されました)。基本的な情報を提供しない限り、すべて当て推量です。

于 2012-11-10T12:35:40.657 に答える