Oracle反轉倒置函數及單行轉換函式

來源:互聯網
上載者:User

Oracle反轉倒置函數

Oracle提供了一個反轉倒置函數reverse,但此函數不能分組倒置,本文提供了一個即可分組倒置的函數,如下所示:

CREATE OR REPLACE FUNCTION REVERSE_F(p_str VARCHAR2, p_delimiter VARCHAR2:='')
  RETURN VARCHAR2 IS
  v_return VARCHAR2(4000);
  vp_str  VARCHAR2(4000) := p_str;
  v_idx    number;
  vp_len  number := length(p_delimiter);
BEGIN
  if (p_delimiter is null) then
    select reverse(p_str) into v_return from dual;
  else
    loop
      v_idx := instr(vp_str, p_delimiter);
      if (v_idx = 0) then
        v_return := vp_str || v_return;
        exit;
      elsif (v_idx = 1) then
        v_return := substr(vp_str, 1, vp_len) || v_return;
        vp_str  := substr(vp_str, vp_len + 1);
      else
        v_return := substr(vp_str, 1, v_idx - 1) || v_return;
        vp_str  := substr(vp_str, v_idx);
      end if;
    end loop;
  end if;
  RETURN v_return;
END REVERSE_F;


Oracle函數之單行轉換函式


1 ASCIISTR

格式:ASCIISTR(C)

說明:將字串C轉換為ASCII字串,即將C中的ASCII字元保留不變,但非ASCII字元則以ASCII表示返回

舉例:

SQL>SELECT ASCIISTR('AB?CDE資料庫') A FROM DUAL;

A

---------------------

AB?CDE6570636E5E93

2 BIN_TO_NUM

格式:BIN_TO_NUM(n1,n2,n3...)

說明:每位由n1,n2,n3等組成的二進位轉換為十進位

舉例:

SQL>SELECT BIN_TO_NUM(1,1,1,1) A FROM DUAL;

A

----------

15

3 CAST

格式:CAST(CAS T)

說明:將運算式C轉換成資料類型T。T可以是內量資料類型,也可以是程式員自訂的資料類型。前提是能夠轉換才可以轉換

舉例:

SQL>SELECT CAST('12345' AS NUMBER) A FROM DUAL;

A

----------

12345

4 DECODE

格式:DECODE(x,if 1,then 1, if 2 then 2 ,.., else z)

說明:將x與if值進行比較,如果等於if n就返回then n.否則就返回else z

舉例:

SQL>SELECT DECODE(1,1,0,-1) AS A,DECODE(1,0,0,-1) AS B FROM DUAL;

AB

--------------------

0-1

5 NUMTODSINTERVAL

格式:NUMTODSINTERVAL(N,C)

說明:把數字N轉換成C指定的INTERVALDAY TO SECOND類型的資料。C的取值為DAY,HOUR,MINUTE,SECOND。C的大小寫無關

舉例:

SQL>SELECT SYSDATE+NUMTODSINTERVAL(10,'DAY') A,SYSDATE+NUMTODSINTERVAL(10,'HOUR') BFROM DUAL;

AB

-----------------------------------

2014/7/1117:20:11 2014/7/2 3:20:11

6 NUMTOYMINTERVAL

格式:NUMTODSINTERVAL(N,C)

說明:把數字N轉換成C指定的INTERVALDAY TO SECOND類型的資料。C的取值為YEAR、MONTH。C的大小寫無關

舉例:

SQL>SELECT SYSDATE+NUMTOYMINTERVAL(10,'YEAR') A,SYSDATE+NUMTOYMINTERVAL(10,'MONTH')B FROM DUAL;

AB

----------------------------------------

2024/7/117:24:182015/5/1 17:24:18

7 TO_CHAR

格式:TO_CHAR(X[,fmt])

說明:將X按fmt格式轉換成字串。X可以是一個日期或者數字,也可以是一個字串,fmt是一個規定了X採用何種格式轉換的格式字串

舉例:

SQL>SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') A,TO_CHAR(111) B FROM DUAL;

AB

-------------

2014-07-02111

8 TO_CLOB

格式:TO_CLOB(x)

說明:將LOB列中的NCLOB值或其他字串x轉換成CLOB值

舉例:

SQL>SELECT TO_CLOB('AAAA') A FROM DUAL;

A

--------------------------------------------------------------------------------

AAAA

9 TO_DATE

格式:TO_DATE(C[,fmt])

說明:將符合fmt指定的特定日期格式的字串C轉換成DATE類型的資料

舉例:

SQL>SELECT TO_DATE('2014-07-02','YYYY-MM-DD') A,TO_DATE('2014-07','YYYY-MM') B FROMDUAL;

AB

----------------------

2014/7/22014/7/1

10 TO_DSINTERVAL

格式:TO_DSINTERVAL(C)

說明:將符合特定格式的字串C轉換成INTERVALDAY TO SECOND類型的資料

舉例:

SQL>SELECTSYSDATE+TO_DSINTERVAL('1000:00:00') A FROM DUAL;

A

-----------------

2014/7/128:49:39

11 TO_LOB

格式:TO_LOB(X)

說明:將LONG列中的值X轉換成LOB列的值

舉例:

12 TO_NUMBER

格式:TO_NUMBER(C[,fmt])

說明:將符合fmt指定的特定數字格式的字串C轉換成數字類型的資料

舉例:

SQL>SELECT TO_NUMBER('0101') A FROM DUAL;

A

----------

101

13 TO_TIMESTAMP

格式:TO_TIMESTAMP(C)

說明:將字串C轉換為一個TIMESTAMP資料類型

舉例:

SQL>SELECTTO_TIMESTAMP('2014-07-1214:10:10.12320', 'YYYY-MM-dd HH24:MI:SS.FF') A FROM DUAL;

A

--------------------------------------------------------------------------------

12-7月-14 02.10.10.123200000下午

14 TO_TIMESTAMP_TZ

格式:TO_TIMESTAMP_TZ(C[, fmt])

說明:將符合fmt指定的特定日期格式的字串C轉換成TIMESTAMPWITH TIMEZONE類型的資料,帶時區

舉例:

SQL>SELECTTO_TIMESTAMP_TZ('2014-07-1214:10:10.12320', 'YYYY-MM-dd HH24:MI:SS.FF') A FROM DUAL;

A

--------------------------------------------------------------------------------

12-7月-14 02.10.10.123200000下午 +08:00
 
15 TO_YMINTERVAL

格式:TO_YMINTERVAL(C)

說明:將符合特定格式的字串C轉換成INTERVALYEAR TO MONTH類型的資料

舉例:

SQL>SELECTSYSDATE+TO_YMINTERVAL('01-03') AFROM DUAL;

A

-----------------

2015/10/29:26:45

16 TRANSLATE

格式:TRANSLATE(X,if y, then z)

說明:查看X中的每個字元,然後查看該字元在if y中是否存在。如果存在,就在if y中找到該字元的位置,然後用then z中相同位置的字元替代該字元,最後返回全部替代之後的X

舉例:

SQL>SELECT TRANSLATE('abcdefghij','abcdef','123456') A FROM dual;

A

----------

123456ghij

17 UNISTR

格式:UNISTR(c)

說明:返回字串c對應的UNICOOE字元

舉例:


SQL>SELECTUNISTR('01-03') A FROM DUAL;

A

01-03

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.