2013/08/26

09-02.Sing-Row Functions【文字列関数(Character Functions)】

■文字列関数
 -CHAR, VARCHAR2タイプの引数をVARCHAR2タイプの値を返す関数

・CONCAT(char1, char2):Concatenationの略称で文字列を結合した結果を返す。「||」演算子と同じ役割。

--CONCAT例
SQL> SELECT CONCAT('mission-oraclemaster.','blogspot')||'.jp' name FROM DUAL;

NAME
--------------------------------
mission-oraclemaster.blogspot.jp

SQL>


・INITCAP(char), LOWER(char), UPPER(char)
 -INITCAP:文字列の最初も文字を大文字に変換
 -LOWER:文字列を小文字に変換
 -UPPER:文字列を大文字に変換

--INITCAP, LOWER, UPPER例
SQL> SELECT INITCAP('oracle-master') name FROM DUAL
  2  UNION ALL
  3  SELECT UPPER('oracle-master') name FROM DUAL
  4  UNION ALL
  5  SELECT LOWER('oracle-master') name FROM DUAL;

NAME
-------------
Oracle-Master
ORACLE-MASTER
oracle-master



・LPAD(char1, n[, char2]). RPAD(char1, n[, char2])
 -LPAD:文字列の左に指定文字を埋める
 -RPAD:文字列の右に指定文字を埋める
 ※nは返す文字列の長さを表し、char1の文字列がnより大きい場合、char1をn個の文字列を返す

--LPAD,RPAD例
SQL> SELECT LPAD('oracle-master', 15, '*') name FROM DUAL
  2  UNION ALL
  3  SELECT RPAD('oracle-master', 15, '*') name FROM DUAL;

NAME
---------------
**oracle-master
oracle-master**



・SUBSTR(char, m, [n]), SUBSTRB(char, m, [n])
 -SUBSTR関数はm番目から長さがn個の文字列を返す
 -mが負数の場合後ろからm番目文字からn個の文字を返す
 -SUBSTRB関数でBはByte単位で処理するを意味する

--3番目の文字列から返す
SQL> SELECT SUBSTR('oracle-master', 3) name FROM DUAL;

NAME
-----------
acle-master


--3番目から4つの文字列を返す
SQL> SELECT SUBSTR('oracle-master', 3, 4) name FROM DUAL;

NAME
----
acle


--後から3番目から2つの文字列を返す
SQL> SELECT SUBSTR('oracle-master', -3, 2) name FROM DUAL;

NA
--
te


--DBがUTF-8の場合
SQL> SELECT SUBSTRB('オラクルマスター' , 1) name FROM DUAL
  2  UNION ALL
  3  SELECT SUBSTRB('オラクルマスター' , 3) name FROM DUAL;

NAME
----------------
オラクルマスター
ラクルマスター



・LENGTH(char), LENGTHB(char):文字列の長さを返す

--文字列のLENGTHを検索する例
--DBがUTF-8の場合
SQL> SELECT LENGTH('オラクルマスター') len FROM DUAL
  2  UNION ALL
  3  SELECT LENGTHB('オラクルマスター') len FROM DUAL;

       LEN
----------
         8
        16



・REPLACE(char1, str1,str2):文字列の特定文字を別文字に変換する

--REPLACE例
SQL> SELECT REPLACE('oracle-master','oracle','db') name FROM DUAL;

NAME
---------
db-master

--大文字、小文字を区別する
SQL> SELECT REPLACE('Oracle-Master', 'oracle', 'DB') name FROM DUAL
  2  UNION ALL
  3  SELECT REPLACE('Oracle-master', 'Oracle', 'DB') name FROM DUAL;

NAME
-------------
Oracle-Master
DB-master



・INSTR(char1, str1, m, n)
 -文字列が含まれているかを調査して文字列の位置を返す
 -指定の文字列が無ければ0が返される
 -char1 : 指定文字、str1 : 検索文字、m : 開始位置、n : 検索順位

--指定した文字「OK」が無いので0を返す
SQL> SELECT INSTR('CORPORATE FLOOR' , 'OK') idx FROM DUAL;

       IDX
----------
         0

--ORがある位置2を返す。左から比較する。
SQL> SELECT INSTR('CORPORATE FLOOR' , 'OR') idx FROM DUAL;

       IDX
----------
         2

--左から3番目からORを検索し位置を返す
SQL> SELECT INSTR('CORPORATE FLOOR', 'OR' , 3) idx FROM DUAL;

       IDX
----------
         5

--左から3番目から比較し、ORが2回目に検索された位置を返す
SQL> SELECT INSTR('CORPORATE FLOOR', 'OR', 3, 2) idx FROM DUAL;

       IDX
----------
        14


・TRIM(char1[,char2]), LTRIM(char1[,char2]), RTRIM(chaar1[,char2])
 -TRIM:特定文字を削除する。削除する文字を入力しないと空白が削除される
 -LTRIM:左から文字を削除する。削除する文字を入力しないと左の空白が削除される
 -RTRIM:右から文字を削除する。削除する文字を入力しないと右の空白が削除される

--oと空白を削除するTRIM例
SQL> SELECT TRIM('o' FROM 'oracle-master') name FROM DUAL;

NAME
------------
racle-master

SQL> SELECT TRIM('o' FROM 'oracle-master') name FROM DUAL
  2  UNION ALL
  3  SELECT TRIM('  oracle-master  ') name FROM DUAL;

NAME
-------------
racle-master
oracle-master


--左側の文字列TRIM例
--空白の場合、左の空白だけ削除される
SQL> SELECT LTRIM('orcle-master' , 'oracle') name FROM DUAL
  2  UNION ALL
  3  SELECT REPLACE(LTRIM(' oracle-master '), ' ', '*') name FROM DUAL;

NAME
--------------
-master
oracle-master*


--右側の文字列TRIM例
--空白の場合、右の空白だけ削除される
SQL> SELECT RTRIM('oracle-master', 'master') name FROM DUAL
  2  UNION ALL
  3  SELECT REPLACE(RTRIM(' oracle-master '), ' ', '*') name FROM DUAL;

NAME
--------------
oracle-
*oracle-master

0 件のコメント:

コメントを投稿

QLOOKアクセス解析