Oracle SQL 関数 : SUBSTR : 文字列切出し
stringRet := SUBSTR( stringSrc , numberPos [ , numberLen ] ); SUBSTRは文字列stringSrcのnumberPos番目からnumberLen文字分の文字列を返します。 (stringSrcの文字列の数え方は先頭が1として処理します。) numberPosが0(ゼロ)の場合は1として処理します。 numberPosが正の数の場合はstringSrcの先頭から数え,numberPosが負の数の場合はstringSrcの 最後から数えます。 numberLenを指定しない場合は、stringSrcのnumberPos番目から最後までの文字列を返します。
SQL> SELECT SUBSTR('ABCDEFGHIJKLMNOPQRSTUVWXYZ', 10, 5),
2 SUBSTR('ABCDEFGHIJKLMNOPQRSTUVWXYZ', 10),
3 SUBSTR('ABCDEFGHIJKLMNOPQRSTUVWXYZ', 0, 5),
4 SUBSTR('ABCDEFGHIJKLMNOPQRSTUVWXYZ',-5, 4)
5 FROM DUAL;
SUBST SUBSTR('ABCDEFGHI SUBST SUBS
----- ----------------- ----- ----
JKLMN JKLMNOPQRSTUVWXYZ ABCDE VWXY
指定文字列に 全角文字 が指定された場合は、全角文字も1文字は1個として扱う様です。
SQL> SELECT SUBSTR('あいうえおかきくけこさしすせそ', 10, 5),
2 SUBSTR('あいうえおかきくけこさしすせそ', 10),
3 SUBSTR('あいうえおかきくけこさしすせそ', 0, 5),
4 SUBSTR('あいうえおかきくけこさしすせそ',-5, 4)
5 FROM DUAL;
SUBSTR('あいうえおか SUBSTR('あいうえおかきく SUBSTR('あいうえおか SUBSTR('あいうえ
-------------------- ------------------------ -------------------- ----------------
こさしすせ こさしすせそ あいうえお さしすせ
さらに指定文字列に 半角、全角文字 が混在していても、うまくいく様です。
SQL> SELECT SUBSTR('あいうabえおかき12くけ345こさしすせそ', 10, 5),
2 SUBSTR('あいうabえおかき12くけ345こさしすせそ', 10),
3 SUBSTR('あいうabえおかき12くけ345こさしすせそ', 0, 5),
4 SUBSTR('あいうabえおかき12くけ345こさしすせそ',-8, 4)
5 FROM DUAL;
SUBSTR('あいう SUBSTR('あいうABえおかき12くけ345こさしす SUBSTR('あいうAB SUBSTR('あい
-------------- ------------------------------------------ ---------------- ------------
12くけ3 12くけ345こさしすせそ あいうab 45こさ