OracleとSQL Serverの違い
OracleとSQL Serverは、いずれも代表的なリレーショナル・データベース製品ですが、連載第3回で登場した基本的なSQL文の中でさえ、文法が異なるものが2つあります。
1つ目は文字列を結合するSQL文です。連載第3回では、文字列の結合には、「||」を使用しましたが、これはOracleでの文法です。
SQL Serverでは、「||」のかわりに「+」を使用しますので、SQLは以下のようになります。
2つ目は、年齢をもとめるSQL文です。連載第3回では、「GETDATE」と「DATEDIFF」を使用しましたが、これはSQL Serverでの文法です。
Oracleでは、現在の日時を得る関数は「SYSDATE」になります。また、Oracleには、「DATEDIFF」に相当する関数がありませんので、より複雑な手順が必要になります。
① 現在の日時と生年月日を、それぞれ「TO_CHAR」関数で8桁の文字列に変換する
② 文字型になった現在の年月日と生年月日を引き算して、結果を10000で割る(桁を4桁ずらす)
③ もとめられた結果の小数点以下を「TRUNC」関数で切り捨てる
Oracleで年齢をもとめるSQL文は以下のようになります。
このように、ごく基本的なSQL文でも実際に利用する製品によって異なる場合がありますので、注意が必要です。