oracle实验12:单行函数-字符函数

单行函数

单行函数分类

  • 字符操作函数
  • 数字操作函数
  • 日期操作函数
  • 数据类型转换函数
  • 综合数据类型函数

语法:

函数名[(参数1,参数2,…)]

其中的参数可以是以下之一:

–用户定义的变量
–变量
–列名
–表达式

实验12:操作字符串的函数

字符函数:主要指参数类型是字符型,不同函数返回值可能是字符型或数字类型。

大小写操作函数

–LOWER LOWER(列名|表达式):全小写
–UPPER UPPER(列名|表达式) :全大写
–INITCAP INITCAP(列名|表达式) :首字母大写

字符串操作函数

–CANCAT CONCAT(列1|表达式1,列2|表达式2):字符串连接
–SUBSTR SUBSTR(列名|表达式,m[,n]):字符串截取
–LENGTH LENGTH(列名|表达式):返回字符串长度
–INSTR INSTR(列名|表达式,’string’, [,m], [n] ) :返回一个字符串在另一个字符串中的位置。
–TRIM TRIM([leading|trailing|both, ]trim_characterFROM trim_source) :去掉左右两边指定字符。
–REPLACE REPLACE (文本, 查找字符串, 替换字符串):替换字符串
–LPAD LPAD(列名|表达式,n,‘string’) :左填充
–RPAD RPAD(列名|表达式, n,‘string’) :右填充

 

lower,upper,initcap字符串的大小写操作

SQL> select lower(ename),upper(ename),initcap(ename) from emp;

LOWER(ENAM UPPER(ENAM INITCAP(EN                                               
---------- ---------- ----------                                               
smith      SMITH      Smith                                                    
allen      ALLEN      Allen                                                    
ward       WARD       Ward                                                     
jones      JONES      Jones                                                    
martin     MARTIN     Martin                                                   
blake      BLAKE      Blake                                                    
clark      CLARK      Clark                                                    
king       KING       King                                                     
turner     TURNER     Turner                                                   
james      JAMES      James                                                    
ford_a     FORD_A     Ford_A                                                                
miller     MILLER     Miller                                                   

已选择12行。

SQL>  select lower('mf TR'),upper('mf TR'),initcap('mf TR') from dual;

LOWER UPPER INITC                                                              
----- ----- -----                                                              
mf tr MF TR Mf Tr                                                              

dual是虚表,让我们用表的形式来访问函数的值。

 

concat将两个字符串连接到一起

SQL> select ename,job,concat(ename,job) from emp;

ENAME      JOB       CONCAT(ENAME,JOB)
---------- --------- -------------------
SMITH      CLERK     SMITHCLERK
ALLEN      SALESMAN  ALLENSALESMAN
WARD       SALESMAN  WARDSALESMAN
JONES      MANAGER   JONESMANAGER
MARTIN     SALESMAN  MARTINSALESMAN
BLAKE      MANAGER   BLAKEMANAGER
CLARK      MANAGER   CLARKMANAGER
KING       PRESIDENT KINGPRESIDENT
TURNER     SALESMAN  TURNERSALESMAN
JAMES      CLERK     JAMESCLERK
FORD       ANALYST   FORDANALYST      

MILLER     CLERK     MILLERCLERK

已选择12行。

 

length查字符串的长度

SQL> select length('张三') from dual; --按照字

LENGTH('张三')                                                                 
--------------                                                                 
             2                                                                 

SQL> select lengthb('张三') from dual; --按照字节

LENGTHB('张三')                                                                
---------------                                                                
              4

SQL> select lengthc('张三') from dual; --unicode的长度

LENGTHC('张三')
---------------
              2

 

substr字符串截取

SQL> select ename ,substr(ename,1,2) "first", substr(ename,3) "middle" ,substr(ename,-1,1) "last" from emp
--从第1位开始,截取2位;不指明n,一直到字符串结尾;负数是从后面开始;

ENAME      firs middle           la
---------- ---- ---------------- --
SMITH      SM   ITH              H
ALLEN      AL   LEN              N
WARD       WA   RD               D
JONES      JO   NES              S
MARTIN     MA   RTIN             N
BLAKE      BL   AKE              E
CLARK      CL   ARK              K
KING       KI   NG               G
TURNER     TU   RNER             R
JAMES      JA   MES              S
FORD       FO   RD               D
MILLER     MI   LLER             R

已选择12行。

 

instr字串在父串中的位置

SQL> select ename,instr(ename,'A') "A在第几位" from emp;

ENAME       A在第几位                                                          
---------- ----------                                                          
SMITH               0                                                          
ALLEN               1                                                          
WARD                2                                                          
JONES               0                                                          
MARTIN              2                                                          
BLAKE               3                                                          
CLARK               3                                                          
KING                0                                                          
TURNER              0                                                          
JAMES               2                                                          
FORD_A              6                                                                      
MILLER              0                                                          

已选择12行。

0表示在父串中未找到字串。

 

截取字符串和添加字符串的函数

trim截去两边的字符

SQL> select trim(leading 'a' from 'aaaaabcaaadeaaaaa') from dual;

TRIM(LEADING
------------
bcaaadeaaaaa       

--截掉连续的前置的a

 

SQL> select trim(trailing 'a' from 'aaaaabcaaadeaaaaa') from dual;

TRIM(TRAILIN
------------
aaaaabcaaade

--截掉连续的后置的a

 

SQL> select trim(both 'a' from 'aaaaabcaaadeaaaaa') from dual;

TRIM(BO
-------
bcaaade

--截掉连续的前置和后置的a                                                             

 

SQL> select trim('a' from 'aaaaabcaaadeaaaaa') from dual;

TRIM('A
-------
bcaaade

--不说明前置还是后置相当于both全截断。

 

trim常用于去空格处理。

SQL> select trim(' ' from '   addfsdf sfsf sfs   ') from dual;

TRIM(''FROM'ADDF                                                               
----------------                                                               
addfsdf sfsf sfs     

 

lpad,rpad填充

SQL> select lpad(ename,20,'*') ename , rpad(ename,10,'-')ename from emp;

ENAME                                    ENAME                                 
---------------------------------------- --------------------                  
***************SMITH                     SMITH-----                            
***************ALLEN                     ALLEN-----                            
****************WARD                     WARD------                            
***************JONES                     JONES-----                            
**************MARTIN                     MARTIN----                            
***************BLAKE                     BLAKE-----                            
***************CLARK                     CLARK-----                            
****************KING                     KING------                            
**************TURNER                     TURNER----                            
***************JAMES                     JAMES-----                            
**************FORD_A                     FORD_A----             

**************MILLER                     MILLER----                            

已选择12行。

lpad是左填充,20是要填充的位数,*是要填充的字符串
rpad是右填充,10是要填充的位数,-是要填充的字符串

 

SQL> select lpad(sal,2,' ') ename, rpad(sal,10,' ') ename,sal from emp;

    位数不足       左对齐              右对齐

ENAM ENAME                       SAL                                           
---- -------------------- ----------                                           
80   800                         800                                           
16   1600                       1600                                           
12   1250                       1250                                           
29   2975                       2975                                           
12   1250                       1250                                           
28   2850                       2850                                           
24   2450                       2450                                           
50   5000                       5000                                           
15   1500                       1500                                           
95   950                         950                                           
30   3000                       3000                                                                                      
13   1300                       1300                                           

已选择12行。

lpad左填充,rpad右填充,一般用途是美化输出结果。如果位数不足,按照截取后的结果显示,不报错。

 

replace替换

SQL>  select replace('JACK and JUE','J','BL') from dual;

REPLACE('JACKA
--------------
BLACK and BLUE

将字符串中的'J'全部替换为'BL'

 

返回目录  http://www.cnblogs.com/downpour/p/3155689.html

 

posted on 2013-06-25 19:00  不吃鱼的小胖猫  阅读(259)  评论(0编辑  收藏  举报