zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    网上邻居无法打开的问题 客户端无法连接打印机问题
    今天一天下午到晚上都在研究如何刷手机,要是被领导知道我帮同学在刷手机系统,非开除我不可。还是贴出来,以后少走弯路吧
    “屏幕保护程序”没有出现“在恢复时使用密码保护”的解决方法
    NOD 32客户端安装时出现的问题
    [模板]二叉树的前、中、后序遍历
    [算法]浅谈求n范围以内的质数(素数)
    [模板]二叉搜索树
    [OI]Noip 2018 题解&总结(普及)
    Centos7.2安装git(源码安装)
    Centos7.2安装maven
  • 原文地址:https://www.cnblogs.com/downpour/p/3155270.html
Copyright © 2011-2022 走看看