2013-03-22 22 views
1

我有一個字母數字字符串。我也有一個號碼。該字符串將始終以此數字開頭。我如何將這個數字與字符串分開並得到字符串的剩餘部分?Oracle SQL:從字符串的起始部分刪除特定數字

例如 串=> 21fgggg21.lkkk和數目=> 21

結果=> fgggg21.lkkk

串=> 215699898.55fff和數目=> 2

結果=> 15699898.55fff

任何提示,將不勝感激。 謝謝。

回答

3
substr(string, length(number)+1) 

regexp_replace(string, '^'||number) 
+0

Thanks Egor! regexp_replace,像魅力一樣工作。 – user613114 2013-03-22 07:25:36

0

如果你只是想選擇它,你可以使用substr和instr的組合。

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

您的結果應該基本上是數字所在的位置後開始的字符串。

+1

'instr(string,'number')'總是等於1,因爲'string'以'number'開頭 – 2013-03-22 05:37:46

2

你也可以使用REGEXP_REPLACE

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

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

要從字符串的開頭 '2':從字符串的開頭刪除 '21'

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

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

通過解釋...

  1. 插入符號(^)表示「錨定到字符串的開頭」。
  2. ^21的意思是「在字符串的開頭匹配21」。
  3. REGEXP_REPLACE有一個可選的第三個參數來替換匹配的字符串。因爲你只是想刪除匹配的字符串,你可以省略參數,而不用替換它。
+0

非常感謝您的好解釋。我會將你的答案標記爲有用的。但我會選擇Egor的回答作爲最後一次,因爲他已經在你面前回答了。再次感謝。 – user613114 2013-03-22 07:25:04

+0

欣賞它!我也投票贊成葉戈爾的回答,因爲這很好 - 它比我的目標更有針對性,並提供了兩種選擇。 – 2013-03-22 13:04:38

相關問題