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)
  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)
  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)
  FROM DUAL;
 
SUBSTR('あいう SUBSTR('あいうABえおかき12くけ345こさしす  SUBSTR('あいうAB SUBSTR('あい
-------------- ------------------------------------------ ---------------- ------------
12くけ3        12くけ345こさしすせそ                      あいうab         45こさ

share


本書用のWebアプリを使ってSQLを実行し学習していきます。初心者の方に分かりやすく、図表を多く使って解説されています。 学習の最後には200問越えのドリルが付いていてSQLのスキルが試せる様になっています。