MySQLの直観的な仕様~OracleやPostgreSQLで困ること
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;