1、創(chuàng)建測試表,create table test_date(v_date date);

10余年專注成都網(wǎng)站制作,成都定制網(wǎng)站,個人網(wǎng)站制作服務,為大家分享網(wǎng)站制作知識、方案,網(wǎng)站設(shè)計流程、步驟,成功服務上千家企業(yè)。為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務,專注于成都定制網(wǎng)站,高端網(wǎng)頁制作,對成都辦公窗簾等多個領(lǐng)域,擁有豐富的網(wǎng)站運維經(jīng)驗。
2、插入測試數(shù)據(jù),
insert into test_date
select sysdate - level * 10 from dual connect by level 100
3、查詢表中所有記錄,select * from test_date,可以看到時間格式為年月日時分秒,
4、編寫sql,將時間截取到年月,
select t.*,
?to_char(v_date, 'yyyymm') v_date_mon1,
?trunc(v_date, 'mm') v_date_mon2
from TEST_DATE t
oracle中,截取某個字符串前的字符需要用instr函數(shù)和substr函數(shù)共同完成。
工具:oracle 10g
步驟:
1、以截取字符串“210-1106000001”中“-”前的部分為例。
2、執(zhí)行語句為:
select?substr('210-1106000001',1,instr('210-1106000001','-')-1)?from?dual;
3、結(jié)果為:
instr函數(shù)語法:instr( string1, string2, start_position,nth_appearance )
參數(shù)含義:
substr函數(shù)語法:substr(strings|express,m,[n])
參數(shù)含義:
strings|express :被截取的字符串或字符串表達式。
m 從第m個字符開始截取。
n 截取后字符串長度為n。
1、將新建好的表aaaa,填充需要查詢的數(shù)據(jù)以"_"或者","為分隔符的兩條數(shù)據(jù)。
2、先挑ID為1的數(shù)據(jù)進行截取查詢演示。
3、如果已知截取字符的長度和特殊字符位置,就可以用substring()函數(shù)來從字符串的開始位置,截取到特殊字符出現(xiàn)的位置。
4、使用charindex()函數(shù)來返回特殊字符出現(xiàn)的位置,查詢結(jié)果及語句。
5、使用LEFT()函數(shù)和charindex()函數(shù)來從字符最左邊開始到特殊字符出現(xiàn)的位置。
6、第一個參數(shù)表示被截取的字符串,第二個參數(shù)表示要在第一個參數(shù)中開始截取的位置,第三個參數(shù)表示要截取的長度。
如果字段存的就是這個,那么這個應該是字符串吧,那么就分幾步操作。
(1)定位,定位{和:的位置,從現(xiàn)在來看有兩種可能,第一種
這是兩個字段,分別是{12345:67:8}和{ABC:0:9},那就簡單了{肯定是1,所以這個也就不需要定位了,只需要定位第一個冒號的位置。
定位的函數(shù)應該是instr
第二種:{12345:67:8}{ABC:0:9}是一個字段的內(nèi)容,那就麻煩一些,不過也能做,希望不是這樣的,因為這個就要麻煩很多了。正則倒是能做,不過正則都要測試,我可沒有相應的環(huán)境做測試。這里也就不寫了,如果是這種,那么自己翻一翻正則函數(shù)的用法,應該能寫出來。
(2)截取,如果是第一種,那么定位了第一個冒號位置以后,用這個位置-2,也就是
instr(字段,':',1)-2這就是截取的長度,
從第二位開始截取,截取這個長度就可以substr(字段,2,instr(字段,':',1)-2)
這樣的話,{12345:67:8}換算到內(nèi)部就是substr({12345:67:8},2,5(7-2)),【7-2說明5的來源,第一個冒號在第7位】,截取出來就是12345
還是那句話,如果是第二種可能,那么就要找每一個{的位置,然后找在{后面距離最近的冒號的位置,然后再一個個的截取操作,正則應該可以操作,不過我還是那句話,需要測試,意思和這個截取函數(shù)差不多,自己好好理解一下應該就能操作了。
如果Oracle版本不是太低的話,使用 正則表達式函數(shù) REGEXP_SUBSTR 處理。\x0d\x0a\x0d\x0a5個參數(shù)\x0d\x0a第一個是輸入的字符串\x0d\x0a第二個是正則表達式\x0d\x0a第三個是標識從第幾個字符開始正則表達式匹配。(默認為1)\x0d\x0a第四個是標識第幾個匹配組。(默認為1)\x0d\x0a第五個是是取值范圍:\x0d\x0ai:大小寫不敏感;\x0d\x0ac:大小寫敏感;\x0d\x0an:點號 . 不匹配換行符號;\x0d\x0am:多行模式;\x0d\x0ax:擴展模式,忽略正則表達式中的空白字符。\x0d\x0a\x0d\x0aSQL SELECT\x0d\x0a 2 REGEXP_SUBSTR(a,'[0-9]+')\x0d\x0a 3 FROM\x0d\x0a 4 test_reg_substr\x0d\x0a 5 WHERE\x0d\x0a 6 REGEXP_LIKE(a, '[0-9]+');
分享標題:oracle如何截取,oracle如何截取字符串
標題來源:http://chinadenli.net/article22/heoocc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、網(wǎng)頁設(shè)計公司、品牌網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、搜索引擎優(yōu)化、網(wǎng)站導航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)