oracle截取字符串(截取某个字符前面的字符串)
发布时间:2020-12-12 15:07:26 所属栏目:百科 来源:网络整理
导读:要求:A.数据库表中的一个字符串 可能含有"+" 例:ORC+001 也可能不含“+” B.要求如果该字符串含有“+”,则
要求: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‘,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) > 0 THEN SUBSTR(WH_CD,INSTR(WH_CD,1) - 1) ELSE WH_CD END AS WH_CD from T_RCV_ISSUE 结果:MR-PS,MR-WS,MR-WS,MR-PS ...... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |