Oracle中通过substr和instr实现截取指定字符之间的字符串:

4803人阅读 评论(0) 收藏 举报
分类:

原文链接

摘要:在开发项目的过程中遇到了这样的一个问题,就是从远程服务器取到的数据中是由一段规则的字符串组成的,但是你想要的还不是这段字符串,是其中的一段字符串,那就的使用Oracle强大的函数了,我的问题是这样的,我要把如下所示红框内的那段字符串截取出来,就是说截取第一个"-"和第二个“-”之间的字符串出来:

一:如图所示:



二:新建数据表:

[sql] view plain copy
  1. CREATE TABLE test (name VARCHAR2 (32));  

三:给表中插入数据:

[sql] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. insert into test values('CA-CA1344-A-11OCT141250-D');  
  2. insert into test values('JD-JD693-A-11OCT141105-D');  

四:查询结果:

方式一:

[sql] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. select substr(name,instr(name,'-',1)+1,instr(name,'-',instr(name,'-',1)+1)-instr(name,'-',1)-1) from test;  

方式二:

[sql] view plain copy
  1. select substr(name,instr(name,'-',1,1)+1,instr(name,'-',1,2)-1-instr(name,'-',1,1)) from test;  

五:结果如下:



六:接下我们再写一下,取第二个"-"到第三个"-"之间的字符串的方法:

[sql] view plain copy
  1. select substr(name,instr(name,'-',2,2)+1,instr(name,'-',2,3)-1-instr(name,'-',2,2)) from test;  


七:结果如下:


查看评论

PLSQL SUBSTR

语法: SUBSTR(source_string, position, length) position: 起始位置   0 会被默认为1,即从第一位开始    正整数 n 从头开始正数第n位开...
  • onlyzxc
  • onlyzxc
  • 2016-12-28 19:16:18
  • 1841

oracle中实现截取字符串(substr)、查找字符串位置(instr)、替换字符串(replace)

(1)oracle中实现截取字符串:substr substr(string, start_position, [length]) 其中,string是元字符串,start_position为开始位置...
  • housonglin1213
  • housonglin1213
  • 2015-12-17 17:45:11
  • 21583

oracle截取字符串(截取某个字符前面的字符串)

要求:A.数据库表中的一个字符串 可能含有"+" 例:ORC+001   也可能不含“+”   B.要求如果该字符串含有“+”,则取“+”之前的字符 例:ORC+001 取ORC   C.如果该...
  • zhenwodefengcaii
  • zhenwodefengcaii
  • 2017-03-29 13:37:31
  • 4506

oracle怎么截取字符串中某个字符前(或者后)的字符串?

oracle怎么截取字符串中某个字符前(或者后)的字符串? 例子: 我要1-9-23-5,最后一个”-“之前的字符串,即1-9-23怎么办? 这里其实和java根据特定字符,截取字符串,道理...
  • Ideality_hunter
  • Ideality_hunter
  • 2017-08-24 16:38:42
  • 357

oracle截取有特殊字符的字符串:

对于: “abc+cba” 要得到abc: SELECT SUBSTR(‘abc+cba’,0,INSTR(‘abc+cba’,’+’,1,1)-1) FROM DUAL得到cba: SELEC...
  • wslone100
  • wslone100
  • 2016-10-12 21:38:44
  • 790

oracle从左右两端截取字符串

描述:在oracle开发或维护过程中经常会遇到字符串的截取问题,其中从左或从右截取字符串也较为常用。 详述: 1.从左 从左截取指定长度的字符串 SQL> select substr('C...
  • u013986802
  • u013986802
  • 2017-05-27 13:45:17
  • 3830

oracle截取字符串并做比较-SUBSTR("字符串",起始位-从1开始数,截取长度)

SUBSTR("字符串",起始位-从1开始数,截取长度)
  • bestcxx
  • bestcxx
  • 2016-06-15 14:41:34
  • 5383

关于oracle中字符串的截取——substr

昨天在工作中遇到了截取字符串问题的,特地的学习了一下substr函数,在此做个记录: 1、截取不带特殊字段的某一个特定字符串: (1) 从字符串左边某一个位置截取到...
  • zy18755122285
  • zy18755122285
  • 2016-05-24 21:02:28
  • 1570

Oracle 字符串截取 从后向前截取方法

Oracle 字符串截取 从后向前截取方法     INSTR:INSTR方法的格式为   INSTR(源字符串, 目标字符串, 起始位置, 匹配序号)   默认查找顺序为从左到右。当起始位置为...
  • e_wsq
  • e_wsq
  • 2012-05-23 13:29:34
  • 3305

oracle中常用的字符串查找、替换以及截取函数的用法!

1:当根据业务需要时,使用group by分组得到的记录,但可能还需要加上条件来对分组得到的数据进行过滤取数.可采用having的关键字来完成,具体参见以下SQL实例.SELECT INSID,COU...
  • apicescn
  • apicescn
  • 2006-05-12 10:37:00
  • 3630
    个人资料
    等级:
    访问量: 13万+
    积分: 1306
    排名: 3万+