【SQL】substrbでマイナス指定したらどうなるのかという話
この前、substrを使ったSQLでの文字列の切り出し方法を書きましたが、
今回はそれのおまけというか備考というか。
基本構文
select substrb('あいうえお', 2, 2) from dual
まずおさらいですが、substrbは"substrb(カラム名, 開始位置, バイト数)"という書き方で使う、
文字列を範囲指定して切り出し抽出するための構文です。
上記の例だと2バイト目から2バイト分で、'い'が抽出されます。
で、この「開始位置」と「バイト数」は数値で指定するのですが、
これをマイナスで指定するとどうなるのか、という(割とどうでもいい)話です。
マイナス指定してみる
select substrb('あいうえお', -2, 2) as '開始位置マイナス', substrb('あいうえお', 2, -2) as '範囲マイナス' from dual
まず、開始位置をマイナス指定する場合ですが、
この場合開始位置は、文字列の後ろからnバイト目という指定になります。
あまり良い使用例は思いつきませんが、
文字列の長さは分からないけど、最後のN文字だけ抽出したいという場合に使えます。
次に抽出範囲をマイナス指定する場合ですが、この場合は0バイトが指定されているのと同じ扱いになります。
よって当然、結果としては何も抽出されません。
こっちは正直使い道がないですね、多分。
結果
開始位置マイナス | 範囲マイナス |
---|---|
お |
終わり。