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

Posted

tags:

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

Oracle把 0000XT!BU-00001!1550XT!1594XT!1594AXT!15940009 截取成 0000XT 0000XT!BU-00001 0000XT!BU-00001!1550XT 。。。类似于这样的

参考技术A


更改标红的数字可以实现。

oracle中如何截取字符串中,某个字符前的字符串? 例如截取字符串210-1106000001中“-”前的字符串?

字符串中“-”前的长度不一定就是三码,有可能是4码或者5码?

oracle中,截取某个字符串前的字符需要用instr函数和substr函数共同完成。

工具:oracle 10g

步骤:

1、以截取字符串“210-1106000001”中“-”前的部分为例。

2、执行语句为:

select substr('210-1106000001',1,instr('210-1106000001','-')-1) from dual;

3、结果为:

instr函数语法:instr( string1, string2, start_position,nth_appearance )

参数含义:

substr函数语法:substr(strings|express,m,[n])

参数含义:

strings|express :被截取的字符串或字符串表达式。

m 从第m个字符开始截取。

n 截取后字符串长度为n。

参考技术A select substr(列, 1, instr(列, '-') -1) from 表。
例:
SQL> select substr('210-1106000001', 1, instr('210-1106000001', '-') -1) from dual;

SUBSTR('210-1106000001',1,INST
------------------------------
210

SQL> select substr('1210-1106000001', 1, instr('1210-1106000001', '-') -1) from dual;

SUBSTR('1210-1106000001',1,INS
------------------------------
1210

以上是关于oracle截取某个字符串前面的字符串?的主要内容,如果未能解决你的问题,请参考以下文章

oracle中怎么取某个字段值的前面数据

oracle正则表达式截取某个字符前的数字

oracle怎样查找某个字符所在字符串第n次出现的位置

sql中如何在where字句里截取某个字段的前几位字符

oracle怎么截取指定字符后面的字符串,或者删除指定字符前面的字符串也行

oracle怎么截取指定字符后面的字符串,或者删除指定字符前面的字符串也行