特定事件的子串
Substring of a specific occurence
我有一个数据类型为 varchar2 的列,其中的数据格式为:
100323.3819823.222
100.323123.443422
1001010100.233888
LOL12333.DDD33.44
我需要删除第一次出现“.”后的整个部分
最后应该是这样的:
100323
100
1001010100
LOL12333
由于第一部分没有任何固定长度,我似乎无法找到确切的子字符串表达式。
一种方法是使用 REGEXP_SUBSTR
:
SELECT REGEXP_SUBSTR(column_name,'^[^.]*') FROM table
另一种方式是将SUBSTR
与INSTR
结合起来,速度会快一些,但是如果数据中没有点的话会变成NULL
,所以你如果需要,必须添加一个开关:
SELECT SUBSTR(column_name, 1, INSTR(column_name,'.') - 1) FROM table
对于 oracle 你可以试试这个:
select substr (i,1,Instr(i,'.',i)-1) from Table name.
我有一个数据类型为 varchar2 的列,其中的数据格式为:
100323.3819823.222
100.323123.443422
1001010100.233888
LOL12333.DDD33.44
我需要删除第一次出现“.”后的整个部分
最后应该是这样的:
100323
100
1001010100
LOL12333
由于第一部分没有任何固定长度,我似乎无法找到确切的子字符串表达式。
一种方法是使用 REGEXP_SUBSTR
:
SELECT REGEXP_SUBSTR(column_name,'^[^.]*') FROM table
另一种方式是将SUBSTR
与INSTR
结合起来,速度会快一些,但是如果数据中没有点的话会变成NULL
,所以你如果需要,必须添加一个开关:
SELECT SUBSTR(column_name, 1, INSTR(column_name,'.') - 1) FROM table
对于 oracle 你可以试试这个:
select substr (i,1,Instr(i,'.',i)-1) from Table name.