1. 程式人生 > >oracle字串常用操作

oracle字串常用操作

oracle操作字串:拼接、替換、擷取、查詢、長度、判斷

1、拼接字串

1)可以使用“||”來拼接字串

select '拼接'||'字串' as str from dual 

2)通過concat()函式實現

select concat('拼接', '字串') as str from dual 

注:oracle的concat函式只支援兩個引數的方法,即只能拼接兩個引數,如要拼接多個引數則巢狀使用concat可實現,如:

select concat(concat('拼接', '多個'), '字串
') from dual

2、擷取字串

SUBSTR(string,start_position,[length])    求子字串,返回字串
解釋:string 源字串
       start_position   開始位置(從0開始)
       length 可選項,子字串的個數

select substr(to_char(sysdate, 'yyyy-mm-dd HH:mi:ss'), 12, 5
) as time from dual
substr("ABCDEFG", 0); //返回:ABCDEFG,擷取所有字元 
substr("ABCDEFG", 2); //返回:CDEFG,擷取從C開始之後所有字元 
substr("ABCDEFG", 0, 3); //返回:ABC,擷取從A開始3個字元 
substr("ABCDEFG", 0, 100); //返回:ABCDEFG,100雖然超出預處理的字串最長度,但不會影響返回結果,系統按預處理字串最大數量返回。 
substr("ABCDEFG", -3); //返回:EFG,注意引數-3,為負值時表示從尾部開始算起,字串排列位置不變。

字串 "AAA-BBB" 擷取"AAA"  "BBB"

select substr('AAA-BBB',1,instr('AAA-BBB','-',-1)-1) 值 from dual;
select substr('AAA-BBB',instr('AAA-BBB','-',-1)+1) 值 from dual;

3、查詢字串

INSTR(string,subString,position,ocurrence)查詢字串位置

解釋:string:源字串
        subString:要查詢的子字串
        position:查詢的開始位置
        ocurrence:源字串中第幾次出現的子字串

select INSTR('CORPORATE FLOOR','OR', 3, 2) as loc from dual 

4、替換字串

replace(strSource, str1, str2) 將strSource中的str1替換成str2

解析:strSource:源字串

     str1: 要替換的字串

     str2: 替換後的字串

select '替換字串' as oldStr, replace('替換字串', '替換', '修改') as newStr from dual

5、長度

 length(nvl(欄位,''))=1

6、判斷

複製程式碼
SELECT SBXH, SFZJHM, 
        case
       when length(nvl(XM,''))=1 then XM
         when length(nvl(XM,''))=2 then substr(XM, 0, 1)||'*'
       when length(nvl(XM,''))=3 then substr(XM, 0, 1)||'**'
       when length(nvl(XM,''))=4 then substr(XM, 0, 1)||'***'
       else substr(XM, 0, 1)||'****'
     end XM,
       DJXH, SDNF, DWMC, YNSE
    FROM ZHZS_SEWSR T
    WHERE YNSE > 120000.000000 AND DWMC IS NOT NULL AND SFZJHM LIKE '36%'
    ORDER BY YNSE DESC
複製程式碼

 

nvl()函式是oracle/plpgsql中的一個函式,格式為:nvl(string1, replace_with)

功能:如果string1 位null,那麼nvl()函式返回replace_with的值,否則返回sting1的值。