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 '%' | 文字列引用符 |
| "" | '' |