sql常用函数-substr()

  2016-07-17 23:48

在Oracle中可以使用substr函数对某个字符串进行截取。

substr函数的用法,取得字符串中指定起始位置和长度的字符串 ,默认是从起始位置到结束的子串。

substr( string, start_position, [ length ] ) substr('目标字符串',开始位置,长度)

如:

substr('This is a test', 6, 2) would return 'is'

substr('TechOnTheNet', -6, 3) would return 'The'

字符串截取函数substr(strings|express,m,[n])

strings|express :被截取的字符串或字符串表达式;

m :从第m个字符开始截取 ;

n :截取后字符串长度为n 。

1.被截取的为字符串或字符串表达式

QUOTE: SQL> select substr(upper('abcde'),1,2) from dual;

SUBSTR(UPPER('ABCDE'),1,2)

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

AB

SQL> select substr('abcde',1,2) from dual;

SUBSTR('ABCDE',1,2)

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

ab

2.如果m<0,则表示从右向左截取

(2.1 这里如果n>0,若n>=|m|,截取字符串长度为|m|个(从右向左截取);

2.2 若n<|m|,截取字符串长度为n个(从右向左截取) )如:

QUOTE: SQL> select substr('abcde',-4,2) from dual;

SUBSTR('ABCDE',-4,2)

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

bc

SQL> select substr('abcde',-4,4) from dual;

SUBSTR('ABCDE',-4,4)

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

bcde

SQL> select substr('abcde',-4,50) from dual;

SUBSTR('ABCDE',-4,50)

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

bcde

2.3 如果m<0,n=0结果为NULL:

QUOTE: SQL> select substr('abcde',-4,0) from dual;

SUBSTR('ABCDE',-4,0)

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

2.4 如果m<0,n<0结果为NULL:

SQL> select substr('abcde',-2,-1) from dual;

SUBSTR('ABCDE',-2,-1)

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

 

3.如果n<=0,结果为0:

QUOTE: SQL> select substr('abcde',1,-4) from dual;

SUBSTR('ABCDE',1,-4)

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

 

(此处与2.4有部分重复,请忽略。)

4.m,n只要有一个为NULL,那么结果为NULL

QUOTE: SQL> select substr('abcde',1,null) from dual;

SUBSTR('ABCDE',1,NULL)

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

 

(n为空,m、n同时为空,这两种情况在这里不再一一举例。)

5.不用n参数时:

5.1 m=NULL里,结果为NULL

5.2 m>=0,结果为从m个字符开始截取到最后

QUOTE: SQL> select substr('abcde',null) from dual;

SUBSTR('ABCDE',NULL)

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

 

SQL> select substr('abcde',0) from dual;

SUBSTR('ABCDE',0)

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

abcde

5.3 m<0时,如果|m|<=被截取字符串的长度, 结果为从右向左截取|m|个字符

QUOTE: SQL> select substr('abcde',-2) from dual;

SUBSTR('ABCDE',-2)

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

de

5.4 如果|m|>被截取字符串的长度,结果为NULL

QUOTE: SQL> select substr('abcde',-6) from dual;

SUBSTR('ABCDE',-6)

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

 

 

你好,游客!(点击更改信息)

您的电子邮件不会被公布,带*为必填。


  • *

    code

      正在提交中,请稍候...
      评论提交成功
    回复 的评论,点击取消回复。