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