TsurugiのSQLの関数のsubstring・substrのメモ。
substring関数は、文字列の一部を取得する関数。
Tsurugi 1.3.0以降。
substring(文字列 from 開始位置 [for 文字数])
開始位置は1が1文字目。
開始位置・文字数は、文字単位。(create tableのchar/varcharはバイト数単位で指定するのだが)
Javaで言うなら、charの個数ではなくcodePointの個数。つまり、サロゲートペアは1文字としてカウントされる。
substr関数は、substringと同じ機能だが構文が異なる。[2025-05-16]
Tsurugi 1.4.0以降。
substr(文字列, 開始位置 [,文字数])
create table str_test ( str varchar(15) ); insert into str_test values('abcde'), ('あいうえお'), ('');
tgsql> select str, substring(str from 2 for 3) from str_test; [str: CHARACTER, @#1: CHARACTER] [abcde, bcd] [あいうえお, いうえ] [, null] (3 rows)
tgsql> select str, substring(str from 2) from str_test; [str: CHARACTER, @#1: CHARACTER] [abcde, bcde] [あいうえお, いうえお] [, null] (3 rows)
tgsql> select str, substr(str, 2, 3) from str_test; [str: CHARACTER, @#1: CHARACTER] [abcde, bcd] [あいうえお, いうえ] [, null] (3 rows)
tgsql> select str, substr(str, 2) from str_test; [str: CHARACTER, @#1: CHARACTER] [abcde, bcde] [あいうえお, いうえお] [, null] (3 rows)