select
成都創新互聯公司是一家集網站建設,曲麻萊企業網站建設,曲麻萊品牌網站建設,網站定制,曲麻萊網站建設報價,網絡營銷,網絡優化,曲麻萊網站推廣為一體的創新建站企業,幫助傳統企業提升企業形象加強企業競爭力。可充分滿足這一群體相比中小企業更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們為更多的企業打造出實用型網站。
substr(B,INSTR(B,'【',1,1)+1,INSTR(B,'】',1,1)-INSTR(B,'【',1,1)-1),
substr(B,INSTR(B,'【',1,2)+1,INSTR(B,'】',1,2)-INSTR(B,'【',1,2)-1),
substr(B,INSTR(B,'【',1,3)+1,INSTR(B,'】',1,3)-INSTR(B,'【',1,3)-1)
from tablename
B表示列名 這個是分割字符串的。。。 插入你自己做吧
截取字符可以使用字符函數
substr(s1,
m,
n)
參數具體表示:
從字符串s1的第m位起,截取長度為n的子串并返回。m小于0表示從右側起
舉例:
select
substr('helloword',
-1,
1)
result
from
dual
t;
返回結果為
d
解釋:返回字符串右側第一個字符。
首先便是這Trim函數。Trim 函數具有刪除任意指定字符的功能,而去除字符串首尾空格則是trim函數被使用頻率最高的一種。語法Trim ( string ) ,參數string:string類型,指定要刪除首部和尾部空格的字符串返回值String。函數執行成功時返回刪除了string字符串首部和尾部空格的字符串,發生錯誤時返回空字符串("")。 如果參數值為null時,會拋出空指針異常。在oracle中,trim使用的形式多為人rtrim()與ltrim()兩種,分別為去除字符串右邊空格與去除字符串左邊空格。
當然trim的功能不止如此,下面進行細致的介紹,這里我多以去除字符串空格為例。
我們看下trim函數的語法描述:trim( [ { {leading|trailing|both} [trim_character]|trim_character} from] trim_source
1)、不使用任何參數
SQL select trim(' 11 ') aa from dual;
AA
--
11
這是最常見的一種使用方法,都使用默認的參數,默認情況下TRIM會同時刪除字符串前后出現的空格。
2)、使用both參數,效果等同于方法一不使用任何參數
SQL select trim(both from ' 11 ') aa from dual;
AA
--
11
“BOTH”參數表示同時去除字符串前后所指定的內容(默認情況下刪除空格)。
3)、使用leading與trailing參數
SQL select trim(leading from ' 11 ') aa from dual;
AA
----
11
SQL select trim(trailing from ' 11 ') aa from dual;
AA
-----
11
從結果中得分隔符'-',可以發現使用leading參數可以去除字符串右端的空格,而trailing參數則可以去除字符串左端的空格。正如oracle提供的rtrim()與ltrim()。
4)、使用trim_character參數
trim_character參數改變了“刪除空格”的默認行為。如果想要刪除字符串'xxxxWORLDxxxx'前后出現的“x”,“trim_character”參數就派上用場了。
SQL select trim('x' from 'xxxxWORLDxxxx') aaaaa from dual;
AAAAA
-----
WORLD
trim_character配合“both”、“trailing”和“leading”三個參數使用效果如下,與之前演示類似。看結果,不贅述。
SQL select trim('x' from 'xxxxWORLDxxxx') aaaaa from dual;
AAAAA
-----
WORLD
SQL select trim(both 'x' from 'xxxxWORLDxxxx') aaaaa from dual;
AAAAA
-----
WORLD
SQL select trim(trailing 'x' from 'xxxxWORLDxxxx') aaaaa from dual;
AAAAA
---------
xxxxWORLD
SQL select trim(leading 'x' from 'xxxxWORLDxxxx') aaaaa from dual;
AAAAA
---------
WORLDxxxx
必須注意的一點是這里的“trim_character”參數只允許包含一個字符,不支持多字符。trim不能滿足我們去除多字符要求,但是我們可以使用rtrim和ltrim來處理。
1)使用rtrim
SQL select rtrim('ORxxxxWORLDxxxxOR','OR') aaaaa from dual;
AAAAA
---------------
ORxxxxWORLDxxxx
2)使用ltrim
SQL select ltrim('ORxxxxWORLDxxxxOR','OR') aaaaa from dual;
AAAAA
---------------
xxxxWORLDxxxxOR
3)聯合使用RTRIM和LTRIM函數達到我們的目的
SQL select rtrim(ltrim('ORxxxxWORLDxxxxOR','OR'),'OR') aaaaa from dual;
AAAAA
-------------
xxxxWORLDxxxx
使用rtrim和ltrim函數時的注意事項:“OR”不表示整個“OR”字符串進行匹配,而是發現任意的字符“O”或字符“R”均做刪除操作。
對于trim函數的應用就介紹到,下面介紹一下replace函數,個人覺得replace函數在去空格時更好用。replace 函數用第三個表達式替換第一個字符串表達式中出現的所有第二個給定字符串表達式。來看下replace函數的語法描述:replace('string_replace1','string_replace2','string_replace3')
'string_replace1' 待搜索的字符串表達式,string_replace1 可以是字符數據或二進制數據。
'string_replace2' 待查找的字符串表達式,string_replace2 可以是字符數據或二進制數據。
'string_replace3' 替換用的字符串表達式,string_replace3 可以是字符數據或二進制數據。
返回類型,如果 string_replace(1、2 或 3)是支持的字符數據類型之一,則返回字符數據;如果 string_replace(1、2 或 3)是支持的 binary 數據類型之一,則返回二進制數據。
這里我們依然以去空格為例。
SQL select replace(' aa kk ',' ','') abcd from dual;
ABCD
----
aakk
與使用trim函數的結果進行對比,我們可以發現,使用replace函數不僅可以去除字符串兩端的空格,也可去除字符串內部的空格。
當然,如果只是要去除字符串兩端的空格,使用trim函數效率會更高。
(1)定義split_type類型:
CREATE OR REPLACE TYPE split_type IS TABLE OF VARCHAR2 (4000) /
(2)定義split函數:
CREATE OR REPLACE FUNCTION split (p_str IN VARCHAR2, p_delimiter IN VARCHAR2) RETURN split_type IS j INT := 0; i INT := 1; len INT := 0; len1 INT := 0; str VARCHAR2 (4000); my_split split_type := split_type (); BEGIN len := LENGTH (p_str); len1 := LENGTH (p_delimiter); WHILE j len LOOP j := INSTR (p_str, p_delimiter, i); IF j = 0 THEN j := len; str := SUBSTR (p_str, i); my_split.EXTEND; my_split (my_split.COUNT) := str; IF i = len THEN EXIT; END IF; ELSE str := SUBSTR (p_str, i, j - i); i := j + len1; my_split.EXTEND; my_split (my_split.COUNT) := str; END IF; END LOOP; RETURN my_split; END split; /
(3)存儲過程中,使用類似
For T In ( select a,b,c,d from table (split('1,2,3,4',',')) ) Loop
--注意下面的inserti語句,varchar類型的值需要補充引號上去
Execute Immediate ' insert into tableName set fieldName = '||T.a ;
Execute Immediate 'commit';
End Loop;
的查詢語句,把分開的結果拼成sql語句并寫入到表中。
寫個存儲過程吧,輸入參數字符串和分隔符,輸出參數TABLE OF NUMBER
查找第一個分隔符,記錄當前位置,然后截取之前的部分,添加到輸出表
從當前位置下一個字符查找下個分隔符,記錄位置,截取數值添加到輸出表
繼續以上過程,直到遍歷整個字符串
,這個字符可以用查找+截取來操作,這種數據為什么扔到數據庫里面操作呢?
那你可以用存儲過程進行處理了!
oracle
截取字符(substr),檢索字符位置(instr)
標題名稱:oracle怎么截符串,oracle數據庫截取字符串函數
分享鏈接:http://vcdvsql.cn/article16/hshidg.html
成都網站建設公司_創新互聯,為您提供網站設計公司、微信公眾號、自適應網站、App設計、網站維護、電子商務
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯