[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 メーリングリストの案内