优秀的编程知识分享平台

网站首页 > 技术文章 正文

plsql字符串分割浅谈(plsql字符串截取)

nanyue 2024-09-14 06:28:47 技术文章 7 ℃

工作之中遇到的小问题,在此抛出问题,并给出解决方法。一方面是为了给自己留下深刻印象,另一方面给遇到相似问题的同学一个解决思路。如若其中有写的不好或者不对的地方也请不加不吝赐教,集思广益,共同进步。

遇到问题:

这是数据库中的一个字段,现在想将起其中的日期和星期分开,并重命名为其他变量。

解决思路:因为该字段的内容格式是****/(*)*/(*)* ***的,所以首先想到的是用substr函数去分割这个字段。详细的substr函数用法见如下:

substr(string string, int a, int b)

参数1:string 要处理的字符串 参数2:a 截取字符串的开始位置 参数3:截取字符串的长度(而不是字符串的结束位置)

首先直接用substr函数来分割数据进行测试代码如:

,得到的结果如:

,可见并不能得到我想要的结果,原因我猜是因为数据存储格式的原因导致(不保证猜测的准确性),于是再进行切割之前先先做一步处理,将该字段先转换为字符串类型的数据,并转换成统一格式,再进行提取,并观察结果。 代码和结果如下:

。可见,这个步骤已经可以将我所需要的日期这个字段进行了分割,并且成功取出。

在取星期的时候思路如下:找到字符串中的空格位置,从空格开始的位置+1后取三个字符串,那么其中就到用到instr函数的一些知识。如下:

instr( string1, string2, start_position,nth_appearance )

string1:源字符串 string2:在string1中需要查找的字符串 start_position:如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引 nth_appearance:代表要查找第几次出现的string2. 此参数可选,如果省略,默认为 1.如果为负数系统会报错

将substr和instr两个函数结合起来,可以看出取星期的函数理论上是这个样子的:substr(accepttime,instr(accepttime," ",1,1)+1,3)。这样其实就可以按照我们任何想要的形式分割数据了。

但是在我的问题中用上述的函数是没有办法将日期分割出来,因为数据的格式是这个样子的

,所以我又取查找类似格式的数据怎么进行分割,最后查询的结果是这样的:

,然后一想,日期是不是可以用同样的方法呢?然而真的可以。。。 所以我最终的代码是这样的:

,结果是这样的:

虽然走了很多弯路,用了不恰当的方法,但是最后还是解决了问题,虽然没有用到但也算是学习了substr和instr的用法,希望这篇随笔可以帮助到大家,哪怕知识一点点~~!

最近发表
标签列表