0

我有下表

DRIVER_GID              DRIVER_REFNUM_QUAL_GID  

SDL2/C001.100000        SDL2.486900 CURRENT DISTRICT 
SDL2/C001.100000        SDL2.486900 PERMANENT DISTRICT 
SDL2/C001.100000000     SDL2.486900 CURRENT DISTRICT  
SDL2/C001.100000000     SDL2.486900 PERMANENT DISTRICT 
SDL2.600119036          SDL2.436001 CURRENT DISTRICT  
SDL2.600119036          SDL2.436001 PERMANENT DISTRICT 

我需要提取字符串“SDL2”之后的数值。来自 DRIVER_REFNUM_QUAL_GID 列。谁能推荐一个查询。

4

2 回答 2

1

使用regexp_substr功能ORACLE

select regexp_substr(DRIVER_REFNUM_QUAL_GID, '[[:digit:]]{6}') from YOURTABLE

这将从您的表格的 DRIVER_REFNUM_QUAL_GID 列中提取相邻的 6 位数字。

如果您希望提取句点之后的所有数字,请使用以下代码:

select regexp_substr(DRIVER_REFNUM_QUAL_GID, '(\.)([[:digit:]]+)',1,1,'i',2) from YOURTABLE

要消除NULLS,可以使用NVL函数。

例如,

select NVL(regexp_substr(DRIVER_REFNUM_QUAL_GID, '(\.)([[:digit:]]+)',1,1,'i',2),999999) from YOURTABLE

所以,如果regexp_substr函数NULL的结果是 ,结果就是999999

于 2013-04-22T20:47:17.830 回答
0

考虑到您只需要数字,SDL2.并且考虑到位数最多可以达到 20 位,您可以使用类似的东西 -

select REGEXP_SUBSTR('SDL2.486900 CURRENT DISTRICT', '[[:digit:]]{2,20}') numval from dual;

您可以编辑号码20以满足您的需要。

所以它看起来像 -

select REGEXP_SUBSTR(DRIVER_REFNUM_QUAL_GID,'[[:digit:]]{2,20}') from your_table;

于 2013-04-22T22:23:15.083 回答