Welcome 微信登录

首页 / 数据库 / MySQL / 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
返回的是"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 Oracle exp 导出用户对象RHEL5.5_x86_64 上安装Oracle10g Release 2相关资讯      oracle 
  • [INS-32052] Oracle基目录和Oracle  (07/22/2014 07:41:41)
  • Oracle 4个大对象(lobs)数据类型  (02/03/2013 12:33:05)
  • Oracle按时间段分组统计  (07/26/2012 10:36:48)
  • [Oracle] dbms_metadata.get_ddl的  (07/12/2013 07:37:30)
  • Liferay Portal 配置使用Oracle和  (07/31/2012 20:07:18)
  • Concurrent Request:Inactive   (07/20/2012 07:44:05)
本文评论 查看全部评论 (0)
表情: 姓名: 字数