[pgsql-jp: 31260] Re: SQL文の解釈について

KAJI Wataru waasuke @ medaka-college.com
2003年 10月 22日 (水) 21:13:44 JST


鹿持渉@メダカカレッジです。

At Wed, 22 Oct 2003 20:26:31 +0900,
Kenichirou Yoshida wrote:

> 例えば、以下のようなSQL文を叩くとエラーになります。
> hogehoge=> select * from hogehoge where NAME='山田 太郎';
> ERROR:  Attribute "name" not found
> 
> となり、これは意味が分からなかったのですが、
> phpPgAdmin 3.1 からも同じ結果でした。
> 
> 色々と試したあげく、エラーが出なくなりましたが、何か釈然しません。
> hogehoge=> select * from hogehoge where "NAME"='山田 太郎';
>     <<<結果表示>>>

PostgreSQL ではふつーはテーブル名やカラム名などは小文字として処理をする。
明示的に大文字を指定したい場合はクォーテーションしろ、ということですね。
もともと大文字小文字を区別しない、というのがスタンダードなんでしたっけ。

# Oracle は逆にデフォルト大文字だったりしますね。

> NAME のところを "NAME" を入れれば問題ないというのですが、
> これでは、phplibが使えません・・・。エラーになります。
> 認証クラスというところにsql文が入っています。

私は phplib 使ったことないんですけど、この場合の解決策は

  ・カラム名に大文字を使うのをやめる
  ・phplib の SQL を作るところをハックして、
    クォーテーションさせるようにする

といったところでしょうか。
PostgreSQL 側でデフォルトで大文字小文字を区別させるようにするのは
難しいんじゃないかと思います。


● from: KAJI Wataru <waasuke @ medaka-college.com>
● 鹿持 渉 @ メダカカレッジ
● http://www.medaka-college.com/




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