oracle 怎么从后开始截取字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 怎么从后开始截取字符相关的知识,希望对你有一定的参考价值。

如: abcdef 截取后4位
变成 ab
怎么用sql 实现?
因为 后 有可能是 abcd.txt 的名字 所以要截取后面的 4位 只留名字

1、在oracle中经常需要使用到截取字符串函数substr。语法:substr(str,num1,[num2]); 默认情况下都是只需要两个参数,它的意思是从第二个字符开始截取str字符串剩下所有的字符。

2、substr函数中第二个参数也可以是负数,它的使用是从str倒数第num1个字符的位置开始截取。

3、也可以同时使用三个数,它的使用是从num1开始截取str字符,截取num2个字符。如下图,

4、在同时使用三个参数的时候,第二个参数也可以是负数,它的使用就是从str倒数num1的位置的开始截取num2个字符。如下图,

5、不过有一点需要注意的是从num位置开始截取str时,如果num2的参数比较大那么返回的结果也只是返回str从num位置开始最多的字符。完成。

参考技术A Rtrim(abcdef,cdef)
Rtrim()的功能就是将字符串abcdef右边的cdef去掉,同理,Ltrim(str,par)的功能就是将字符串str右边的par去掉追问

原有文件 是 abcd.TXT 前面的abcd不一定是多少位的 可是后面的.TXT 是确定的 我想把.TXT去掉

追答

那可以啊,前提是你 的abcd.TXT是字符串,假设有一个文件abcd....xyz.TXT用函数Rtrim(abcd....xyz.TXT,.TXT)将.TXT去掉

参考技术B substr( string, start_position, [ length ] )
  参数分析:
  string
  字符串值
  start_position
  截取字符串的初始位置, Number型,start_position为负数时,表示从字符串右边数起。
  length
  截取位数,Number型
  其中,length为可选,如果length为空(即不填)则返回start_position后面的所有字符。
  意思就是:
  从start_position开始,取出length个字符并返回取出的字符串。
  具体参考示例。
  示例:
  SELECT substr('This is a test', 6, 2) FROM dual 返回 'is'
  substr('SyranMo have a dream', -8, 2)
参考技术C Select substr('abcdef',1,2) From dual
这个结果就ab
不懂你想要什么结果追问

有可能是 ABCDEF.TXT ,前面的名字不一定多少位 我要把 .TXT截掉

追答

用replace替换.txt吧
Select Replace('ABCDEF.TXT','.TXT') From dual

追问

不行呀 我就怕 文件时 ABCDEF.txt 后面的扩展名是 小写的

小写的话 Select Replace('ABCDEF.txt','.TXT') From dual 这个就查不到了

追答

这样吧
Select substr('ABCDEF.TXT',1,length('ABCDEF.TXT')-4) From dual

本回答被提问者采纳

java 怎么从后向前截取字符串

参考技术A 用StringBuilder类里面的方法,substring截取,reverse翻转 参考技术B Java代码
String str = "440103000000";
System.out.print(str.replaceAll("0*$", ""));本回答被提问者采纳

以上是关于oracle 怎么从后开始截取字符的主要内容,如果未能解决你的问题,请参考以下文章

Oracle字符串截取

oracle substr函数用法

java 怎么从后向前截取字符串

oracle截取某一字符串中的全部数字作为另外一个查询语句中in的查询条件,怎么做

oracle里从右截取字符,ORACLE怎么截取字符串例如有一个位字符串

oracle截取某个字符串前面的字符串?