Oracle SQL:从字符串的初始部分删除特定数字

时间:2013-03-22 05:21:35

标签: sql string oracle numbers

我有一个alhpanumeric字符串。我也有一个号码。该字符串将始终以此数字开头。如何将此数字与字符串分开并获取字符串的剩余部分?

e.g。 string => 21fgggg21.lkkk和number => 21

结果=> fgggg21.lkkk

的字符串=> 215699898.55fff和number => 2

结果=> 15699898.55fff

任何暗示都将受到赞赏。 感谢。

3 个答案:

答案 0 :(得分:3)

substr(string, length(number)+1)

regexp_replace(string, '^'||number)

答案 1 :(得分:2)

您也可以使用REGEXP_REPLACE。要从字符串的开头删除“21”:

SELECT REGEXP_REPLACE('21fgggg21.lkkk', '^21') FROM DUAL;

REGEXP_REPLA
------------
fgggg21.lkkk

从字符串的开头删除“2”:

SELECT REGEXP_REPLACE('215699898.55fff', '^2') FROM DUAL;

REGEXP_REPLACE
--------------
15699898.55fff

作为解释......

  1. 插入符号(^)表示“锚定到字符串的开头”。
  2. ^21表示“在字符串开头匹配21”。
  3. REGEXP_REPLACE有一个可选的第三个参数,用于替换匹配的字符串。因为您只想删除匹配的字符串,所以可以省略该参数,该参数将其替换为任何内容。

答案 2 :(得分:0)

如果您只是想选择它,可以使用substr和instr的组合。

substr(string, instr(string, 'number') + 1, len(string))

您的结果应该基本上是在找到号码后开始的字符串。