私は、私が取り組んできたアプリケーションを今夜見つけました。クエリが作られますが、問題を示している。バージョン間で異なるPostgreSQL正規表現
select
'123' ~ '^\d+$' as result_1,
'123' ~ '^[0-9]+$' as result_2
私は、Windows 7上で稼動しているPostgreSQL V9.1を持っていると私は私が手にこのクエリを実行します。
私はUbuntuの10.04でのPostgreSQL V9.0上のクエリを実行するとをT、T
はしかし、私が取得:
F、T
PostgreSQLは、 "\ d"の扱いでv9.0とv9.1の間で変更されたか、WindowsとUbuntuの間にインストールされたlibsの違いがあります。
いずれにしても、あなたのチェック制約などが2つの間で同じように動作しない可能性があると私は思っています(私は確かにそうしませんでした)。
注:残念ながら、私は9.0を実行しているWindows 7ボックスに簡単にアクセスできないし、そこでもテストします。
誰でもこれを説明できますか?それがよくわかっているなら、私を許してください。私はそれをgoogledときに私は答えを見ていない。明らかに安全なことは、両方の場所で動作するので[0-9]だけを使用することです。しかし、再び、私はなぜこれが起こっているのか知りたいと思います。
ありがとう!素晴らしい答えと説明。私は '123'〜E '^ \\ d + $'をresult_1としてテストしました.WindowsとLinuxの両方、そして9.0と9.1の両方で動作します。 –