Home実験室 − No.0047


        No.0047(SQL)
        文字列の前後から指定文字を削る(TRIM関数)

■環境
  □OS: Windows XP Professional SP3
  □Oracle: Oracle Database 11g R2 (Standard)
  □OSログインユーザ: ORA_DBAグループ
  □Oracleユーザ: dicdic(実験用ユーザー)

■実験
  0. 実験ユーザー「dicdic」でコネクトする。

SQL> conn dicdic/Oracle11g 接続されました。 SQL>



  1. 【TRIM関数@ LEADINGオプション】
     TRIM関数はある文字列から指定した文字(文字列指定はできない)を端折ってくれる。
     これには3つのオプションがあり、まず一つ目は「LEADING」。文字列の左側から端折る。

SQL> SELECT TRIM(LEADING '日' FROM '日日曜日日') FROM DUAL; TRIM(L ------ 曜日日 SQL>



  2. 端折る指定の文字だけで構成された文字列はすべてトリミングされてなくなってしまう。。

SQL> SELECT TRIM(LEADING '日' FROM '日日日日日') FROM DUAL; T - SQL>



  3. 文字列の中間部分にトリミング対象の文字があっても変化は生じない。

SQL> SELECT TRIM(LEADING '日' FROM '曜日日日曜') FROM DUAL; TRIM(LEADI ---------- 曜日日日曜 SQL>



  4. 【TRIM関数A TRAILINGオプション】
     TRAILINGオプションでは、文字列の右側から端折られる。

SQL> SELECT TRIM(TRAILING '日' FROM '日日曜日日') FROM DUAL; TRIM(T ------ 日日曜 SQL>



  5. 端折る指定の文字だけで構成された文字列の場合はLEADINGオプションと同じ動き。

SQL> SELECT TRIM(TRAILING '日' FROM '日日日日日') FROM DUAL; T - SQL>



  6. まぁ、これもLEADINGと同じ動きです。

SQL> SELECT TRIM(TRAILING '日' FROM '曜日日日曜') FROM DUAL; TRIM(TRAIL ---------- 曜日日日曜 SQL>



  7. 【TRIM関数B BOTHオプション】
     BOTHオプションでは、文字列の両側から端折られる。

SQL> SELECT TRIM(BOTH '日' FROM '日日曜日日') FROM DUAL; TR -- 曜 SQL>



  8. 端折る指定の文字だけで構成された文字列の場合は他のオプションと同じ挙動です。

SQL> SELECT TRIM(BOTH '日' FROM '日日日日日') FROM DUAL; T - SQL>



  9. まぁ、これも当然こうです。

SQL> SELECT TRIM(BOTH '日' FROM '曜日日日曜') FROM DUAL; TRIM(BOTH' ---------- 曜日日日曜 SQL>



  10. 【TRIM関数C オプション指定しない場合】
     オプションを指定しない場合は両方から端折られます。デフォルトが「BOTH」ってことですな。

SQL> SELECT TRIM('日' FROM '日日曜日日') FROM DUAL; TR -- 曜 SQL>



  11. 【TRIM関数D オプションも、端折る文字も指定しない場合】
     検索対象の文字列しか指定しない場合は、スペースが端折られます。
     つまり、「デフォルトはBOTHオプションで、スペースが端折られる」ということ。

SQL> SELECT TRIM(' 日曜日 ') FROM DUAL; TRIM(' ------ 日曜日 SQL>



  12. えっ? わかりにくいですか? スペースがなくなったことを判りやすくしましょうか。

SQL> SELECT '→ 日曜日 ←' "これが",'→' || TRIM(' 日曜日 ') || '←' "こうなる" FROM DUAL; これが こうなる ---------------- ---------- → 日曜日 ← →日曜日← SQL>



  13. TRIM関数は、大文字と小文字を区別します。

SQL> SELECT TRIM(LEADING 'a' FROM 'ABC') FROM DUAL; TRI --- ABC SQL>



  14. TRIM関数は全角と半角を区別します。

SQL> SELECT TRIM(LEADING 'A' FROM 'ABC') FROM DUAL; TRI --- ABC SQL> SELECT TRIM(LEADING 'A' FROM 'ABC') FROM DUAL; TRIM(L ------ ABC SQL>



  15. 検索対象は文字で指定する。文字列を指定できない。

SQL> SELECT TRIM(BOTH '曜日' FROM '曜日は日曜') FROM DUAL; SELECT TRIM(BOTH '曜日' FROM '曜日は日曜') FROM DUAL * 行1でエラーが発生しました。: ORA-30001: 切捨てセットの文字は1つにする必要があります SQL>





    【PR】    Oracle実験室監修  『Oracleアーキテクチャ鳥瞰図』 PDF  (Oracleのアーキテクチャを一目で俯瞰できるイラスト)  


Home実験室 − No.0047

© 2011-2011   Amateur Laboratory of ORACLE
inserted by FC2 system