zoukankan      html  css  js  c++  java
  • Oracle字符串截取

    关于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
      返回的是"
    " 如果该字符串没有匹配字符 返回的是“”。

    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
  • 相关阅读:
    linux 压缩当前文件夹下所有文件
    redis从入门到精通
    焦点小组测试和可用性测试
    面包屑的故事
    VSCode导入两个工程示例
    数据库规格化
    mergeCI一点小波澜
    Java中List与Set相互转化
    MyBatis中in的使用
    长寿时代的养老风险管理
  • 原文地址:https://www.cnblogs.com/pipizhu/p/1728772.html
Copyright © 2011-2022 走看看