特定事件的子串

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

另一种方式是将SUBSTRINSTR结合起来,速度会快一些,但是如果数据中没有点的话会变成NULL,所以你如果需要,必须添加一个开关:

SELECT SUBSTR(column_name, 1, INSTR(column_name,'.') - 1) FROM table

对于 oracle 你可以试试这个:

select substr (i,1,Instr(i,'.',i)-1) from Table name.