oracle 11,用substr截取漢子,我發(fā)現(xiàn)這個(gè)截取沒有什么規(guī)律?。坑械刂窞楸本┦惺吧絽^(qū)石景山路廣東省深圳市羅湖區(qū)XXX上海市浦東區(qū)xxxxxxxx把個(gè)省截取出來,select add2 from trade_base;select substr(add4,1,3),substr(add2,instr(add2,'省'),instr(add2,'市'))from trade_base;卻成了這個(gè)樣子?北京市開頭,截取0-3正常,廣東省深圳市3-6卻為“省深圳市羅湖”我郁悶了求指點(diǎn)?謝謝是把各個(gè)市提取出來。我暈看來我犯了一個(gè)錯(cuò)。解決了select substr(add4,1,3) coding ,substr(add2,case when instr(add2,'省') > 0 then instr(add2,'省')+1 else 0 end,3) as areafrom trade_base;
2 回答

守著一只汪
TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
不是沒規(guī)律
是上海和北京那個(gè)沒有省,還有instr選出來的是省那位的長度地址,得+1才是后一位
1 | select substr(add2,instr(add2, '省' )+1,instr(add2, '市' )) from trade_base |

郎朗坤
TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊
Oracle的substr函數(shù)是用于截取字符串的。
格式如下:
substr(字符串,截取開始位置,截取長度) //返回截取的字
幾種常見用法:
substr('Hello World',0,1) //返回結(jié)果為 'H' *從字符串第一個(gè)字符開始截取長度為1的字符串
substr('Hello World',1,1) //返回結(jié)果為 'H' *0和1都是表示截取的開始位置為第一個(gè)字符
substr('Hello World',2,4) //返回結(jié)果為 'ello'
substr('Hello World',-3,3)//返回結(jié)果為 'rld' *負(fù)數(shù)(-i)表示截取的開始位置為字符串右端向左數(shù)第i個(gè)字符
oracle代碼測試:
1 | select substr( 'Hello World' ,-3,3) value from dual; |
- 2 回答
- 0 關(guān)注
- 2627 瀏覽
添加回答
舉報(bào)
0/150
提交
取消