字元函式之Substr(chr,0,m)與Substr(chr,m)的區別

skyin_1603發表於2016-11-15

oracle資料庫內部函式之中的字元函式,其中substr()算是
運用比較多的函式,以下簡單透過例子講述它的一些運用。
substr()函式就是用來擷取指定字串中的部分字元。

----substr()字元函式:
--自定義的例子:

Substr(chr,0,m)Substr(chr,m)的區別:

sys@PROD>select substr('ahijdfogo',0,4),

  2  substr('ahijdfogo',4) from dual;

SUBS SUBSTR

---- ------

ahij jdfogo


---檢視錶emp中deptno=20部分的記錄

scott@PROD>select * from emp

  2  where deptno = 20;

EMPNO ENAME      JOB         MGR HIREDATE         SAL       COMM DEPTNO

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

 7369 SMITH      CLERK      7902 17-DEC-80        800                20

 7566 JONES      MANAGER    7839 02-APR-81       2975                20

 7788 SCOTT      ANALYST    7566 19-APR-87       3000                20

 7876 ADAMS      CLERK      7788 23-MAY-87       1100                20

 7902 FORD       ANALYST    7566 03-DEC-81       3000                20

 7777 SUSU       CLERK      7782 13-NOV-16       3000        500     20

6 rows selected.


---使用Substr(chr,n,m)字元函式按不同引數要求擷取ename欄位

scott@PROD>select substr(ename,3),substr(ename,0,3)

  2  from emp where deptno = 20;

SUBSTR(ENAME,3)                  SUBSTR(ENAME

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

ITH                              SMI

NES                              JON

OTT                              SCO

AMS                              ADA

RD                               FOR

SU                               SUS

6 rows selected.
#可以看到,返回的兩個欄位的記錄是不一樣的。

--注意,Substr(chr,n,m)函式中,n,m兩個函式里的引數,當n=0,
m=0亦或者省略都是不一樣的決定,返回的結果就是不一樣的。以上的
兩個例子也可以看到,還有,下面的那個例子,大家可以慢慢體會。
當省略n,m中的一個引數,則預設是省略n 引數,即n=0.(如上述)


---當m=0不省略:
scott@PROD>select substr(ename,3,0) from emp where deptno = 20;


S
-













6 rows selected.
#返回6條記錄,但是6條的記錄都是空的,因為安要求返回就是沒有字元。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31392094/viewspace-2128537/,如需轉載,請註明出處,否則將追究法律責任。

相關文章