參考:
一、oracle操作字符串:拼接、替換、截取、查找;
二、oracle中的trim函數使用介紹
--字符串去空格
--輸出:a b c;
SELECT TRIM(' a b c ') || ';' FROM dual;
SELECT TRIM(BOTH FROM ' a b c ') || ';' FROM dual;
--輸出: a b c;
SELECT TRIM(TRAILING FROM ' a b c ') || ';' FROM dual;
SELECT RTRIM(' a b c ') || ';' FROM dual;
--輸出:a b c ;
SELECT TRIM(LEADING FROM ' a b c ') || ';' FROM dual;
SELECT LTRIM(' a b c ') || ';' FROM dual;--字符串去除指定字符
--注意:只能指定一位字符
--輸出:111;
SELECT TRIM('0' from '000111000') || ';' FROM dual;
--輸出:111;
SELECT TRIM(BOTH '0' from '000111000') || ';' FROM dual;
--輸出:000111;
SELECT TRIM(TRAILING '0' from '000111000') || ';' FROM dual;
--輸出:111000;
SELECT TRIM(LEADING '0' from '000111000') || ';' FROM dual;--字符串替換
--將原字符(第一個參數)中的字符(第二個參數)替換為新的字符(第三個參數)
--輸出:隔壁鄰居:王五
SELECT REPLACE('隔壁鄰居:張三', '張三', '王五') FROM dual;--字符串查找
--查找字符串(參數一)中,字符(參數二)從位置(參數三)開始,第幾次(參數四)出現的位置,找不到返回0
--注意:位置(參數二)從1開始,否則找不到。返回結果為位置,從1開始
--輸出:1
SELECT INSTR('隔壁鄰居:張三', '隔', '1', '1') FROM dual;
--輸出:0
SELECT INSTR('隔壁鄰居:張三', '隔', '0', '1') FROM dual;--字符串截取
--從位置(參數二)開始,截取字符串(參數一),N(參數三)個字符
--注意:位置(參數二)從1開始,可以小于1,效果和1相同。字符個數(參數三)可省略,省略時默認截取到字符串末尾
--輸出:隔壁鄰
SELECT SUBSTR('隔壁鄰居:張三', 1, 3) FROM dual;
--輸出:居:張三
SELECT SUBSTR('隔壁鄰居:張三', 4) FROM dual;--字符串查找+截取
--截取某個字符串后的字符
--思路一:用INSTR定位位置,再用SUBSTR截取
--輸出:張三,年齡:18
SELECT SUBSTR('隔壁鄰居:張三,年齡:18', INSTR('隔壁鄰居:張三', ':', '1', '1') + 1) FROM dual;
--思路二:直接使用字符串替換
--輸出:張三,年齡:18
SELECT REPLACE('隔壁鄰居:張三,年齡:18', '隔壁鄰居:', '') FROM dual;--截取某個字符串后,另一個字符串前的字符
--思路一:大致與前面一樣,只是需要再根據位置計算一下截取字符串的長度(長度=后一個字符位置-1-前一個字符長度)
--輸出:張三
SELECT SUBSTR('隔壁鄰居:張三,年齡:18',INSTR('隔壁鄰居:張三,年齡:18',':','1','1') + 1,(INSTR('隔壁鄰居:張三,年齡:18', ',', '1', '1')-1-INSTR('隔壁鄰居:張三,年齡:18', ':', '1', '1')))
FROM dual;
--思路二:截兩次
--第一次
--輸出:隔壁鄰居:張三
SELECT SUBSTR('隔壁鄰居:張三,年齡:18', 1, INSTR('隔壁鄰居:張三,年齡:18', ',', '1', '1') - 1) FROM dual;
--第二次
--輸出:張三
SELECT SUBSTR('隔壁鄰居:張三', INSTR('隔壁鄰居:張三', ':', '1', '1') + 1) FROM dual;
--一步到位
--輸出:張三
SELECT SUBSTR(SUBSTR('隔壁鄰居:張三,年齡:18', 1, INSTR('隔壁鄰居:張三,年齡:18', ',', '1', '1') - 1),INSTR('隔壁鄰居:張三,年齡:18', ':', '1', '1') + 1)
FROM dual;
?