MySQLの直観的な仕様~OracleやPostgreSQLで困ること

カテゴリ: WEB、WEBシステム関連 / 公開日: 2010年7月02日(金曜)17:35 / 投稿者: Tom Goodsun

MySQLのイケてない仕様だの、いろいろあるもののやはり今の主流には変わりない。
私も仕事で使うのはMySQLが比率的に8割ぐらいとなっている。
ほかはOracleやPostgreSQL。DB2やSQL Serverは使ったことすらない。

で、まぁウェブで主流の3大DBベンダーを使っててふと気付いた小さいことだけど、物理名(列別名や表別名)ってそれぞれのベンダーで違う。
たとえば、Oracleでは次のSQLは列別名はすべて英大文字になってしまう。
対して、PostgreSQLではすべて小文字になってしまう。
MySQLはそのままの形で返してくれる。

SELECT col1 AS name, col2 AS ADDRESS FROM sample_table;

-- Oracleの場合
col1 AS name >> NAME
col2 AS ADDRESS >> ADDRESS

-- PostgreSQLの場合
col1 AS name >> name
col2 AS ADDRESS >> address

-- MySQLの場合
col1 AS name >> name
col2 AS ADDRESS >> ADDRESS

これはプログラムなんかで扱う場合は非常に困る。
一応これは回避策があって、別名を引用符で囲むことでその通り表示される。ちなみにスペースも入れられる。

SELECT col1 AS 'name', col2 AS 'ADDRESS 1' FROM sample_table;