`
z7swf
  • 浏览: 183538 次
社区版块
存档分类
最新评论

Oracle内置函数--字符函数

阅读更多
    1、ASCII()和CHR()
sql 代码
 
  1. DECLARE  
  2.     V_VARCH VARCHAR2(5) :='X';  
  3. BEGIN  
  4.     --返回'X'的ASCII码,输出88   
  5.     DBMS_OUTPUT.put_line(ASCII(V_VARCH));  
  6.     --返回ASCII码为88的字符,输出‘X’   
  7.     DBMS_OUTPUT.put_line(CHR(88));  
  8. END;  
   
    2、CONCAT()拼接字符
sql 代码
 
  1. DECLARE    
  2.     V_VARCH_FULLNAME VARCHAR2(50);    
  3. BEGIN    
  4.     SELECT CONCAT(C.first_name,C.last_name)    
  5.     INTO V_VARCH_FULLNAME    
  6.     FROM CUSTOMERS C    
  7.     WHERE C.customer_id = 1;    
  8.     --返回customer_id=1的消费者的全名     
  9.     DBMS_OUTPUT.put_line(V_VARCH_FULLNAME);    
  10.     --单独字符串操作   
  11.     V_VARCH_FULLNAME :=CONCAT('X','Y');  
  12.     DBMS_OUTPUT.put_line(V_VARCH_FULLNAME);    
  13. END;    

    CONCAT(X,Y)函数的作用是将Y列的值拼接在X列值的后面。类似“||”的功能
sql 代码
 
  1. SELECT C.first_name ||' ' || C.last_name AS FULLNAME  
  2. FROM CUSTOMERS C  
  3. WHERE C.customer_id=1;  
   
    3、INITCAP()   将每个单词的首字母转换为大写。
sql 代码
 
  1. DECLARE    
  2.     V_VARCH_RETURN VARCHAR2(50);    
  3. BEGIN    
  4.     SELECT INITCAP(P.description)    
  5.     INTO V_VARCH_RETURN    
  6.     FROM PRODUCTS P    
  7.     WHERE P.product_id = 1;    
  8.     --返回product_id=1的产品信息。    
  9.     --输出:A Description Of Modern Science     
  10.     --原数据为:A description of modern science     
  11.     DBMS_OUTPUT.put_line(V_VARCH_RETURN);    
  12.     --对字符串进行操作   
  13.     V_VARCH_RETURN := INITCAP('A description of modern science');   
  14.     --输出结果一致   
  15.     DBMS_OUTPUT.put_line(V_VARCH_RETURN);   
  16. END;    

    4、INSTR(x,find_string[,start][,occurrence])函数用于在x中查找find_string,返回find_string的所在位置。
sql 代码
 
  1. DECLARE  
  2.     V_INT_INDEX NUMBER;  
  3. BEGIN  
  4.     --在AAA中查找‘A’,从第1个字符开始找,返回第2次出现的位置   
  5.     V_INT_INDEX := INSTR('AAA','A',1,2);  
  6.     DBMS_OUTPUT.put_line(V_INT_INDEX);  
  7.     --在NAME中查找‘Science’,缺省从第一位开始找,返回第一次出现的位置。   
  8.     SELECT INSTR(P.name,'Science')  
  9.     INTO V_INT_INDEX  
  10.     FROM PRODUCTS P  
  11.     WHERE P.product_id = 1;  
  12.     DBMS_OUTPUT.put_line(V_INT_INDEX);  
  13. END;  

    5、LENGTH(x)返回字符串x的长度
sql 代码
 
  1. DECLARE    
  2.     V_VARCH_RETURN NUMBER;    
  3. BEGIN    
  4.     V_VARCH_RETURN :=LENGTH('KOOK');  
  5.     --输出4   
  6.     DBMS_OUTPUT.put_line(V_VARCH_RETURN);    
  7. END;    

    6、LOWER()和UPPER()完成大小写转换
sql 代码
 
  1. DECLARE    
  2.     V_VARCH_RETURN VARCHAR2(10) :='KOOK';    
  3. BEGIN    
  4.     --大写转小写   
  5.     DBMS_OUTPUT.put_line(LOWER(V_VARCH_RETURN));    
  6.     --小写转大写  
  7.     DBMS_OUTPUT.put_line(UPPER(V_VARCH_RETURN));   
  8. END;    

    7、LPAD()和RPAD()
sql 代码
 
  1. DECLARE    
  2.     V_VARCH_RETURN VARCHAR2(10) :='KOOK';    
  3. BEGIN    
  4.     --用左边填补空格,凑足8个字符   
  5.     DBMS_OUTPUT.put_line(LPAD(V_VARCH_RETURN,8));  
  6.     --用左边填补‘X’,凑足8个字符   
  7.     DBMS_OUTPUT.put_line(LPAD(V_VARCH_RETURN,8,'X'));    
  8.     --用右边填补空格,凑足8个字符   
  9.     DBMS_OUTPUT.put_line(RPAD(V_VARCH_RETURN,8));    
  10.     --用右边填补‘X’,凑足8个字符   
  11.     DBMS_OUTPUT.put_line(RPAD(V_VARCH_RETURN,8,'X'));    
  12.       
  13. END;   
    还可以对数字运用该函数
sql 代码
 
  1. SELECT RPAD(P.name,30,'.'),LPAD(P.price,8,'*+')  
  2. FROM PRODUCTS P  
  3. WHERE P.product_id < 4;  
    PRICE列为NUMBER类型。

    8、LTRIM()、RTRIM()和TRIM()
    LTRIM(x[,trim_string])函数如果省略trim_string参数表示从x的左边截去空格,否则从x的左边截去trim_string部分。RTRIM表示从右边做相同的动作,TRIM表示从两边做相同的动作,但是使用上和另外两个有点不同,具体参考下面的例子:
sql 代码
 
  1. DECLARE    
  2.     V_VARCH_RETURN VARCHAR2(50):='KOOK';    
  3. BEGIN    
  4.     --从左边截去‘K’   
  5.     DBMS_OUTPUT.put_line(LTRIM(V_VARCH_RETURN,'K'));    
  6.     --从右边截去‘K’   
  7.     DBMS_OUTPUT.put_line(RTRIM(V_VARCH_RETURN,'K'));   
  8.     --从两边截去‘K’   
  9.     DBMS_OUTPUT.put_line(TRIM('K' FROM 'KOOK'));   
  10.     --从两边截去空格   
  11.     DBMS_OUTPUT.put_line(TRIM(' ' FROM ' KOOK '));   
  12.     DBMS_OUTPUT.put_line(TRIM(' KOOK '));  
  13. END;    

    9、NVL()和NVL2()
       NVL(x,value)如果x为NULL,就返回value,否则返回x。
       NVL2(x,value1,value2)如果x不为NULL,返回value2,否则返回value2。
sql 代码
 
  1. DECLARE    
  2.     V_VARCH_RETURN VARCHAR2(50):='KOOK';    
  3. BEGIN    
  4.     V_VARCH_RETURN := NVL(NULL,'HAVE NO VALUE');   
  5.     DBMS_OUTPUT.put_line(V_VARCH_RETURN);  
  6.       
  7.     SELECT NVL2(C.phone,C.phone,'UNKNOW')  
  8.     INTO V_VARCH_RETURN  
  9.     FROM CUSTOMERS C  
  10.     WHERE C.customer_id = 5;  
  11.     DBMS_OUTPUT.put_line(V_VARCH_RETURN);  
  12.       
  13.     --无法使用 NVL2直接操作,下面语句报错!   
  14.     --V_VARCH_RETURN := NVL2('XXX','HAVE VALUE','HAVE NO VALUE');  
  15.     --V_VARCH_RETURN := NVL2(NULL,'HAVE VALUE','HAVE NO VALUE');  
  16.     --DBMS_OUTPUT.put_line(V_VARCH_RETURN);  
  17.       
  18. END;    

    10、REPLACE()函数
       REPLACE(X,STR1,STR2)在X中找到STR1,并将其换成STR2。
sql 代码
 
  1. DECLARE    
  2.     V_VARCH_RETURN VARCHAR2(50):='KOOK';    
  3. BEGIN    
  4.     --输出‘KEEK’   
  5.     DBMS_OUTPUT.put_line(REPLACE(V_VARCH_RETURN,'OO','EE'));  
  6. END;    

    11、SUBSTR()函数
       SUNSTR(X,START[,LENGTH])用于从X中取得从START位置开始的一个子字符串,还可以使用可选参数LENGTH指定子字符串的长度。省略LENGTH表示从START开始一直到最后一个字符。
sql 代码
 
  1. DECLARE    
  2.     V_VARCH_RETURN VARCHAR2(50):='KOOK';    
  3. BEGIN    
  4.     --从第二个字符开始,一直取到末尾,输出 ‘OOK’   
  5.     DBMS_OUTPUT.put_line(SUBSTR(V_VARCH_RETURN,2));  
  6.     --从第二个字符开始,取两个字符长度,输出‘OO’   
  7.     DBMS_OUTPUT.put_line(SUBSTR(V_VARCH_RETURN,2,2));  
  8. END;    

    12、SOUNDEX()函数
       SOUNDEX(X)函数用于获得包含X发音的一个字符串,该函数用于对于英文拼写不同但发音相似的单词间的比较。
sql 代码
 
  1. DECLARE    
  2.     V_VARCH_A VARCHAR2(50):='WHITE';    
  3.     V_VARCH_B VARCHAR2(50):='WHYTE';   
  4.     V_VARCH_C VARCHAR2(50):='KOOK';   
  5. BEGIN    
  6.     IF SOUNDEX(V_VARCH_A)=SOUNDEX(V_VARCH_C) THEN  
  7.         DBMS_OUTPUT.put_line('A SOUND LIKE C');  
  8.     ELSIF SOUNDEX(V_VARCH_A)=SOUNDEX(V_VARCH_B) THEN  
  9.         --正确输出结果   
  10.         DBMS_OUTPUT.put_line('A SOUND LIKE B');  
  11.     ELSIF SOUNDEX(V_VARCH_C)=SOUNDEX(V_VARCH_B) THEN  
  12.         DBMS_OUTPUT.put_line('C SOUND LIKE B');  
  13.     ELSE  
  14.         DBMS_OUTPUT.put_line('NO RESULT');  
  15.     END IF;  
  16. END;    
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics