数据库字符串截取——Demo(100;30;20)

原创 2015年11月18日 16:45:10

数据以;为分隔符,数据库数据如下:

;;50

;22;

;14;

30;;

20;;80

20;30;20

需要获取分割符之间的数据,可以使用截取函数substr、位置查找函数instr

1、获取第一个数字

SELECT  a.exe_level, substr(a.exe_level,0,instr(a.exe_level, ';')-1) FROM sel_course a ; ----第一个数


2、获取第二个数

SELECT  a.exe_level, substr(a.exe_level,instr(a.exe_level, ';')+1,instr(a.exe_level, ';',1,2)-instr(a.exe_level, ';')-1) FROM sel_course a ;----第二个数


3、获得第三个数

SELECT  a.exe_level, substr(a.exe_level,instr(a.exe_level, ';',1,2)+1) FROM sel_course a ;----第三个数



函数说明:

    转自http://yedward.net/?id=62

(1)oracle中实现截取字符串:substr

substr(string, start_position, [length])

其中,string是元字符串,start_position为开始位置,length是可选项,表示子字符串的位数。

例子:

substr('ABCDEFG', 0);    -- 返回结果是:ABCDEFG,从0位开始截取后面所有

substr('ABCDEFG', 2);    -- 返回结果是:CDEFG,从2位开始截取后面所有

substr('ABCDEFG', 0, 3);  -- 返回结果是:ABC,从0位开始往后截取3个字符长度

substr('ABCDEFG', 0, 100);  -- 返回结果是:ABCDEFG,虽然100超出了元字符串长度,但是系统会按元字符串最大数量返回,不会影响返回结果

substr('ABCDEFG', -3);  -- 返回结果是:EFG,如果是负数,则从尾部往前数,截取-3位置往后的所有字符串

(2)查找字符串位置:instr

instr(string, subString, [start_position, [nth_appearance]])

其中,string是元字符串;subString是要查找的子字符串;start_position是要查找的开始位置,为可选项(默认为1),注意在这里字符串索引从1开始,如果此参数为正,则从左到右检索,如果此参数为负,则从右到左检索;nth_appearance是元字符串中第几次出现的子字符串,此参数可选,缺省默认为1,如果是负数则系统报错。

例子:

instr('ABCDABCDAEF', 'AB');   -- 返回结果是:1,因为instr字符串索引从1开始,所以是1不是0

instr('ABCDABCDAEF', 'DA', 1, 2);   -- 返回结果是:8,返回第二次出现'DA'的位置

instr('A BCDABCDAEF', 'DA', 1, 2);  -- 返回结果是:9,由于我在元字符串中加了一个空格,空格仍然算一个字符




版权声明:本文为博主牟云飞原创文章,未经博主允许不得转载。 https://blog.csdn.net/myfmyfmyfmyf/article/details/49908955

关于maxIdle ,MaxActive,maxWait介绍

原文:关于maxIdle ,MaxActive,maxWait介绍                作者:yuyue618 首先打开Tomcat目录下的conf文件夹然后打开context.x...
  • AJAX20032007
  • AJAX20032007
  • 2015-04-02 10:47:36
  • 1147

生成20个1-100不重复的随机数

思路很简单 1.创建1个长度为100的int数组作为容器,存放1-100,1个结果容器,1个标记量 2.调用随机函数得到N,用N当做数组的下标 3.通过下标取到对应的值判断是否有效,若有效,则进...
  • qinhui13
  • qinhui13
  • 2013-10-09 00:17:20
  • 2024

100首英文歌

1. don’t cry–guns n’ roses这首歌曾唱哭了千万人。总是能够触痛了心底最软的地方,心抽痛着,眼圈红了,却没有眼泪渗出,每多听一次就多一次的依恋…389460|3|http://s...
  • ding_net
  • ding_net
  • 2011-03-11 14:25:00
  • 1371

Java(.NET)经典排序算法之选择排序

一、算法原理 对比数组中前一个元素跟后一个元素的大小,如果后面的元素比前面的元素小则用一个变量k来记住他的位置, 接着第二次比较,前面“后一个元素”现变成了“前一个元素”,继续跟他的“后一个元素”...
  • xiaoyiyz
  • xiaoyiyz
  • 2016-01-22 11:36:47
  • 376

调整命令行的列数和行数 mode con: cols=100 lines=10000

mode con: cols=100 lines=10000
  • u012307002
  • u012307002
  • 2014-02-16 16:21:35
  • 1232

王师傅卖鞋进价30元甩卖20元,问亏多少的问题解析

今天中午看人发了一个小题目,兴趣突来,就算了算, 先看题目: 王师傅是卖鞋的,一双鞋进价30元甩卖20元,顾客来买鞋给了张50,王师傅没零钱,于是找邻居换了50元。 事后邻居发现钱是假的,王师...
  • shao941122
  • shao941122
  • 2015-12-18 14:12:14
  • 2657

钞票是这样的???????

这位大姐的眼神…
  • danssion
  • danssion
  • 2014-06-25 12:01:22
  • 234

linux下查看文件第20-30行内容的N种方法及命令介绍

首先创建文件及填充内容 [root@VM_179_129_centos tmp]# seq 100 > /tmp/seq.txt结果展示 命令介绍:seq 用于产生从某个数到另外一个数之间的所有整...
  • jiedao_liyk
  • jiedao_liyk
  • 2017-09-08 17:11:08
  • 976

只查看一个文件(100行)中的第20-30行内容

利用sequence=seq 序列命令 1.      seq +序列数:表示生成从1到几的序列          seq +开始数+序列数:表示从几开始到几         seq+开始数+公...
  • qq_40979234
  • qq_40979234
  • 2017-11-16 19:18:48
  • 90

腾讯经典面试题

 1、一楼到十楼的每层电梯门口都放着一颗钻石,钻石大小不一。你乘坐电梯从一楼到十楼,每层楼电梯门都会打开一次,只能拿一次钻石,问怎样才能拿到相对较大的一颗?­ ­2、某人去玩具店买小熊,单价30元 付...
  • No1programer2009
  • No1programer2009
  • 2009-11-03 12:25:00
  • 742
收藏助手
不良信息举报
您举报文章:数据库字符串截取——Demo(100;30;20)
举报原因:
原因补充:

(最多只允许输入30个字)