[pgsql-jp: 26543] Re: % で始まる文字の LIKE 検索

Satoshi Nagayasu snaga @ oak.forus.or.jp
2002年 6月 30日 (日) 00:08:37 JST


永安です。

Naofumi Kondoh wrote:
> ソフト工房の近藤です。
> > マニュアルにも、もうちょっと詳しく例示されていると嬉しいですね。
> 
> PostgreSQL のマニュアルは実によくできていて、本件に
> ついても詳細に記述されています。

あ、マニュアルの「説明」に関して言えばそうなんですけど、
「例示」と言ったのは、マニュアルにある例に「エスケープ文字」の
マッチングのパターンが含まれているといいな、と思ったのです。

> アンダースコアやパーセント記号そのものをパターンマッチさせたい場合は
> patternの文字1字づつエスケープ文字で指定する必要があります。ディフォルトの
> エスケープ文字はバックスラッシュですが、ESCAPE句を使用することによって変更
> が可能です。エスケープ文字そのものとのマッチさせたい場合は、エスケープ文字
> を2つ記述して下さい。

「パーセント記号をマッチングさせるにはエスケープ文字が必要」
「エスケープ文字にマッチングさせるにはエスケープ文字をふたつ続ける」

ことは書いてありますが、「パーセント記号にマッチさせるエスケープ文字」が、
「エスケープ文字そのもの」なのか「エスケープされたエスケープ文字」なのかは
上の説明からは判然としません。

後者の「エスケープ文字を二つ続ける」という表現からすると、
前者の「エスケープ文字」というのは「エスケープ文字ひとつ」と
解釈される可能性もあります。
多分、初めて読んだらそう解釈する人が多いのではないかと思います。

でも実際には「エスケープされたエスケープ文字」が必要なわけですよね?

なので、

> '%abc' LIKE '\\%%'      true

と一行書いてあるとハッピーなのかな、と。

-- 
NAGAYASU Satoshi <snaga @ oak.forus.or.jp>



pgsql-jp メーリングリストの案内