1、將新建好的表aaaa,填充需要查詢的數(shù)據(jù)以"_"或者","為分隔符的兩條數(shù)據(jù)。
專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)株洲免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了數(shù)千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
2、先挑ID為1的數(shù)據(jù)進(jìn)行截取查詢演示。
3、如果已知截取字符的長(zhǎng)度和特殊字符位置,就可以用substring()函數(shù)來從字符串的開始位置,截取到特殊字符出現(xiàn)的位置。
4、使用charindex()函數(shù)來返回特殊字符出現(xiàn)的位置,查詢結(jié)果及語句。
5、使用LEFT()函數(shù)和charindex()函數(shù)來從字符最左邊開始到特殊字符出現(xiàn)的位置。
6、第一個(gè)參數(shù)表示被截取的字符串,第二個(gè)參數(shù)表示要在第一個(gè)參數(shù)中開始截取的位置,第三個(gè)參數(shù)表示要截取的長(zhǎng)度。
如果字段存的就是這個(gè),那么這個(gè)應(yīng)該是字符串吧,那么就分幾步操作。
(1)定位,定位{和:的位置,從現(xiàn)在來看有兩種可能,第一種
這是兩個(gè)字段,分別是{12345:67:8}和{ABC:0:9},那就簡(jiǎn)單了{(lán)肯定是1,所以這個(gè)也就不需要定位了,只需要定位第一個(gè)冒號(hào)的位置。
定位的函數(shù)應(yīng)該是instr
第二種:{12345:67:8}{ABC:0:9}是一個(gè)字段的內(nèi)容,那就麻煩一些,不過也能做,希望不是這樣的,因?yàn)檫@個(gè)就要麻煩很多了。正則倒是能做,不過正則都要測(cè)試,我可沒有相應(yīng)的環(huán)境做測(cè)試。這里也就不寫了,如果是這種,那么自己翻一翻正則函數(shù)的用法,應(yīng)該能寫出來。
(2)截取,如果是第一種,那么定位了第一個(gè)冒號(hào)位置以后,用這個(gè)位置-2,也就是
instr(字段,':',1)-2這就是截取的長(zhǎng)度,
從第二位開始截取,截取這個(gè)長(zhǎng)度就可以substr(字段,2,instr(字段,':',1)-2)
這樣的話,{12345:67:8}換算到內(nèi)部就是substr({12345:67:8},2,5(7-2)),【7-2說明5的來源,第一個(gè)冒號(hào)在第7位】,截取出來就是12345
還是那句話,如果是第二種可能,那么就要找每一個(gè){的位置,然后找在{后面距離最近的冒號(hào)的位置,然后再一個(gè)個(gè)的截取操作,正則應(yīng)該可以操作,不過我還是那句話,需要測(cè)試,意思和這個(gè)截取函數(shù)差不多,自己好好理解一下應(yīng)該就能操作了。
關(guān)于Oracle里面的一些小函數(shù)
要求 A 數(shù)據(jù)庫表中的一個(gè)字符串? 可能含有 + 例 ORC+
也可能不含 +
B 要求如果該字符串含有 + 則取 + 之前的字符 例 ORC+ 取ORC
C 如果該字符串不含 + 則直接取該字符串
解答 利用ORACLE中 INSTR SUBSTR以及CASE WHEN語法即可實(shí)現(xiàn)
Oracle中函數(shù)
INSTR INSTR方法的格式為
INSTR(源字符串 目標(biāo)字符串 起始位置 匹配序號(hào))
默認(rèn)查找順序?yàn)閺淖蟮接?當(dāng)起始位置為負(fù)數(shù)的時(shí)候 從右邊開始查找
例 Select INSTR( ORC+ + ) From dual
返回的是"4" 如果該字符串沒有匹配字符 返回的是 0
SUBSTR 取子字符串 取子字符串
SUBSTR(源字符串 起始位置 要取多少位)
從 起始位置 開始 取 多少"個(gè)
例 Select SUBSTR( ORC+ ) From dual;
返回的是 ORC
全例如下
表T_RCV_ISSUE
WH_CD字段
取 WH_CD 如果該字段包含 + 取 + 之前的字符
如果該字段沒有 + 取整個(gè)字段
T_RCV_ISSUE表
WH_CD 分別為 MR PS+ MR WS MR WS+ MR PS
執(zhí)行
SELECT CASE
WHEN INSTR(WH_CD + )
THEN SUBSTR(WH_CD INSTR(WH_CD + ) )
ELSE WH_CD
END AS WH_CD
FROM?? T_RCV_ISSUE
lishixinzhi/Article/program/Oracle/201311/17245