[pgsql-jp: 39508] Re: 8.3の"operator does not exist"エラー

ITAGAKI Takahiro itagaki.takahiro @ oss.ntt.co.jp
2008年 7月 22日 (火) 15:45:29 JST


"EBIHARA, Yuichiro" <ebihara @ iplocks.co.jp> wrote:

> > 誤解が多いのですが、シングルクォートで囲った '999' の型は "UNKNOWN" であり、
> > "TEXT" ではありません。

> マニュアルの記述は説明を簡単にするために敢えて触れていないということなのでしょうか。それにしても注記があるとうれしいですが。
> http://www.postgresql.jp/document/pg833doc/html/sql-syntax-lexical.html#SQL-SYNTAX-CONSTANTS

分かりづらいところがありますが、下記の箇所が関連しています。

| 4.1.2.5. 他の型の定数
| 明示的な型キャストは、定数がどの型でなければならないかについて
| 曖昧な点がなければ(例えば定数が直接テーブル列に代入されている場合)
| 省略しても構いません。その場合自動的に型強制されます。 

'foo' は、まずは、他の型の定数で、型が省略されていると解釈されるのでしょう。
そして、「型が省略されているにもかかわらず、型の指定に曖昧な点がある」場合には、
4.1.2.5 の条件に当てはまらないため、文字列と解釈されると読みとれます。

……難解な文章です。

------------------------------------------------------------
板垣貴裕 <itagaki.takahiro @ oss.ntt.co.jp>





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