ACCESS関数をPostgreSQL関数に変換する


2006.1 ACCESS 2000 SP-3 + PostgreSQL 8.0.4

パススルークエリやODBC Direct、ADOを使う場合、そこで用いるSQL文はPostgreSQL用のSQL文で記述しなければいけません。ACCESSのクエリのSQL文をそのまま用いても、そのSQLはPostgreSQLには理解できない方言である可能性があります。ここでは特にSQL文中で使用する関数に絞って、移行する際の注意点を考えます。
ACCESSのクエリで使える関数は組み込み関数だけでも相当な量がありますが、私が使っているものだけを取り上げています。

ACCESS PostgreSQL

集約関数

Sum(合計) sum
Count(カウント) count
Min、Max(最小、最大) min、max
Avg(平均) avg
First、Last(先頭、最後) min、maxで代替可能な場合もある

文字列関数

Format to_char
Replace replace
Left、Right、Mid substring
Len char_length
Trim、LTrim、RTrim trim
UCase、LCase upper、lower
InStr position
StrConv translateで代替可能な場合もある

算術関数

Abs abs
Fix trunc
Sgn sign
Rnd random

日付時刻関数

Now LOCALTIMESTAMP(0)
Date CURRENT_DATE
Time LOCALTIME(0)
Year、Month、Day、Hour、Minute、Second、DatePart EXTRACT
WeekDay to_char('日付'::timestamp, 'D')
DateSerial、TimeSerial
DateAdd、DateDiff +/-

変換関数

 
Nz COALESCE
Val
Asc ascii
Hex to_hex

特殊評価

 
IsNull COALESCEで代替可能
IsDate

フロー制御

 
IIf CASE WHEN THEN ELSE END
Switch CASE WHEN THEN ELSE END

演算子

 
&(文字列連結) ||
LIKE "*" LIKE '%'
文字列引用符  
"" ''

MS ACCESSからPostgreSQLへ移行するに戻る TOPに戻る