MW211 EXIT

devlog
PostgreSQL/9.0と9.1の違い(2)
2012年04月06日
PostgreSQLの9.0と9.1では「standard_conforming_strings」の既定値が変更になった。
┌────┬─────────────────┐
│9.0以前 │standard_conforming_strings = off │
├────┼─────────────────┤
│9.1以降 │standard_conforming_strings = on  │
└────┴─────────────────┘

比較すると、こんな感じ。
┌────────┬───────┬───────┬───────┐
│                │ E''で囲った  │ 9.0以前(off) │ 9.1以降(on)  │
├────────┼───────┼───────┼───────┤
│特殊文字「\d」  │E'\\d'        │'\\d'         │'\d'          │
├────────┼───────┼───────┼───────┤
│「\」の一致     │= E'\\'       │= '\\'        │= '\'         │
├────────┼───────┼───────┼───────┤
│「\」のLIKE一致 │LIKE E'%\\\\%'│LIKE '%\\\\%' │LIKE '%\\%'   │
└────────┴───────┴───────┴───────┘

これまでは、常時「正規表現ですよ」という臨戦態勢だったのが、
これからは、「E''」で囲った時だけ特別に「正規表現ですよ」という風になった。

なお、PDOではこの設定値をみて、差異を吸収してくれるので
「standard_conforming_strings = on」状態のような感じで
値を指定してあげれば(「\」とかおおめに指定しなくてもよい、これまでもそう)、
よろしくやってくれる。
分類:PostgreSQL