關(guān)于Oracle里面的一些小函數(shù)
要求:A.數(shù)據(jù)庫(kù)表中的一個(gè)字符串 可能含有"+" 例:ORC+001 -
也可能不含“+”
B.要求如果該字符串含有“+”,則取“+”之前的字符 例:ORC+001 取ORC
C.如果該字符串不含"+",則直接取該字符串。
解答:利用Oracle中 INSTR,SUBSTR以及CASE WHEN語(yǔ)法即可實(shí)現(xiàn)。
Oracle中函數(shù)
INSTR:INSTR方法的格式為
INSTR(源字符串, 目標(biāo)字符串, 起始位置, 匹配序號(hào))
默認(rèn)查找順序?yàn)閺淖蟮接。?dāng)起始位置為負(fù)數(shù)的時(shí)候,從右邊開(kāi)始查找。
例:Select INSTR('ORC+001','+',1,1) From dual
返回的是"4" 如果該字符串沒(méi)有匹配字符 返回的是“0”。
SUBSTR:取子字符串 取子字符串
SUBSTR(源字符串,起始位置,要取多少位)
從“起始位置”開(kāi)始,取“多少"個(gè)
例 Select SUBSTR('ORC+001',1,3) From dual;
返回的是“ORC”
全例如下:
表T_RCV_ISSUE
WH_CD字段
取 WH_CD 如果該字段包含"+",取“+”之前的字符
如果該字段沒(méi)有"+",取整個(gè)字段
T_RCV_ISSUE表
WH_CD 分別為 MR-PS+007,MR-WS,MR-WS+001,MR-PS
執(zhí)行
SELECT CASE
WHEN INSTR(WH_CD, '+', 1, 1) > 0
THEN SUBSTR(WH_CD, 1, INSTR(WH_CD, '+', 1, 1) - 1)
ELSE WH_CD
END AS WH_CD
FROM T_RCV_ISSUE
結(jié)果:MR-PS,MR-WS,MR-WS,MR-PS
本文出自:億恩科技【mszdt.com】
服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|