[データベース比較]部分文字列取得SUBSTRの罠

RDBMSには大抵、部分文字列取得用にSUBSTR関数があります。

使い方は

SUBSTR([文字列],[開始インデックス],[切り出す文字数])

ですが、[開始インデックス]が0のときに注意が必要です。

開始インデックスが「1」のときはいいとして

SELECT SUBSTR('ABCDE',1,3) -> 'ABC'

0のときはデータベースで振る舞いが違います。

・Oracle : SELECT SUBSTR('ABCDE',0,3) FROM DUAL -> 'ABC'
(インデックス「1」の場合と同じ動作)

・MySQL : SELECT SUBSTR('ABCDE',0,3) -> ''
(空の文字列が取得される)

・PostgreSQL : SELECT SUBSTR('ABCDE',0,3) -> 'AB'
(前1文字分が削られる)

うっかりすると移行のときなんかに大変そうですね…

posted by へっぽ at 00:36 | TrackBack(0) | DB - その他 | このブログの読者になる | 更新情報をチェックする
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/149908257

この記事へのトラックバック