oracle截取某個字符前面的字符串


已驗證。

要求:A.數據庫表中的一個字符串 可能含有"+" 例:ORC+001

  也可能不含“+”

  B.要求如果該字符串含有“+”,則取“+”之前的字符 例:ORC+001 取ORC

  C.如果該字符串不含"+",則直接取該字符串。

  解答:利用ORACLE中 INSTR,SUBSTR以及CASE WHEN語法即可實現。

  Oracle中函數

  INSTR:INSTR方法的格式為

  INSTR(源字符串, 目標字符串, 起始位置, 匹配序號)

  默認查找順序為從左到右。當起始位置為負數的時候,從右邊開始查找。

  例:Select INSTR(‘ORC+001‘,‘+‘,1,1) from dual

  返回的是"4" 如果該字符串沒有匹配字符 返回的是“0”。

  SUBSTR:取子字符串 取子字符串

  SUBSTR(源字符串,起始位置,要取多少位)

  從“起始位置”開始,取“多少"個

  例 Select SUBSTR(‘ORC+001‘,1,3) from dual;

  返回的是“ORC”

  全例如下

  表T_RCV_ISSUE

  WH_CD字段

  取 WH_CD 如果該字段包含"+",取“+”之前的字符

  如果該字段沒有"+",取整個字段

  T_RCV_ISSUE表

  WH_CD 分別為 MR-PS+007,MR-WS,MR-WS+001,MR-PS

  執行

  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

  結果:MR-PS,MR-WS,MR-WS,MR-PS ......


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM