2015-04-07 30 views
0

我一直試圖用PLSQL中的REGEXP_REPLACE替換給定字符串中圍繞關鍵字POSTPONE的所有文本。用PLSQL中的REGEXP_REPLACE替換所有實例

在存在兩個彼此相鄰的筆記的情況下,只有第一個實例被替換。

下面是我一直在努力

CROWHURA_POSTPONE_26/03/2015_Postpone_1 30/03/2015 00:00:00~CAMERONR_POSTPONE_30/03/2015_Postpone_1 04/04/2015 00:00:00~CAMERONR_NOTES_30/03/2015_waiting on sr results~CHINGD_POSTPONE_04/04/2015_Postpone_1 07/04/2015 00:00:00 

的例子我想只與__NOTE_

#CAMERONR_NOTES_30/03/2015_waiting on sr results# 

我一直在使用正則表達式的文字是這樣的:

REGEXP_REPLACE(q.comments,'(~|^).{0,10}_POSTPONE_.{1,42}(~|$)','# ') 

任何幫助將不勝感激。

編輯: 進一步的例子,該更換的需求爲工作: 對於這些,我想任何及所有_note_相關文本

VANHOOYJ_NOTES_27/03/2015_Site switching out ~VANHOOYJ_POSTPONE_27/03/2015_Postpone_1 03/04/2015 00:00:00 
FABISHD_POSTPONE_31/03/2015_Postpone_1 06/04/2015 00:00:00 
FABISHD_NOTES_31/03/2015_GE enquiry~FABISHD_POSTPONE_31/03/2015_Postpone_1 06/04/2015 00:00:00 
CAMERONR_NOTES_31/03/2015_booked sr ~CAMERONR_POSTPONE_31/03/2015_Postpone_1 05/04/2015 00:00:00 
FABISHD_POSTPONE_01/04/2015_Postpone_1 06/04/2015 00:00:00 
CHINGD_POSTPONE_01/04/2015_Postpone_1 03/04/2015 00:00:00~CHINGD_POSTPONE_04/04/2015_Postpone_1 07/04/2015 00:00:00 
FABISHD_NOTES_31/03/2015_GE enquiry~FABISHD_POSTPONE_31/03/2015_Postpone_1 06/04/2015 00:00:00 
CHINGD_NOTES_01/04/2015_waiting on switching~CHINGD_POSTPONE_01/04/2015_Postpone_1 06/04/2015 00:00:00 
FABISHD_NOTES_19/03/2015_Needs to be completed by switching~FABISHD_POSTPONE_19/03/2015_Postpone_1 26/03/2015 00:00:00~FABISHD_NOTES_26/03/2015_Switching~FABISHD_POSTPONE_26/03/2015_Postpone_1 30/03/2015 00:00:00~CHINGD_POSTPONE_30/03/2015_Postpone_1 06/04/2015 00:00:00 
CHINGD_NOTES_27/03/2015_GEN2360163 to confirm read~CHINGD_POSTPONE_27/03/2015_Postpone_1 01/04/2015 00:00:00~CHINGD_POSTPONE_29/03/2015_Postpone_1 02/04/2015 00:00:00~CHINGD_POSTPONE_04/04/2015_Postpone_1 07/04/2015 00:00:00 
CHINGD_POSTPONE_29/03/2015_Postpone_1 02/04/2015 00:00:00~CHINGD_POSTPONE_04/04/2015_Postpone_1 07/04/2015 00:00:00 
CHINGD_NOTES_01/04/2015_waiting on switching~CHINGD_POSTPONE_01/04/2015_Postpone_1 06/04/2015 00:00:00 
FABISHD_NOTES_30/03/2015_Unsure where to credit units to.~FABISHD_POSTPONE_30/03/2015_Postpone_1 31/03/2015 00:00:00~CAMERONR_POSTPONE_31/03/2015_Postpone_1 05/04/2015 00:00:00 
+0

適合你嗎? http://sqlfiddle.com/#!4/9eecb/3139 –

+0

是的,謝謝,那適用於這個例子。我添加了其他的例子,這也需要工作。 – Deamo

+0

而當沒有'_notes_'相關? –

回答

1

SQL Fiddle

** **查詢:

select val, 
regexp_replace(val, '(~?([^~]+_NOTES_[^~]+)~?)|(.)','#\2#') x, --keeps the notes part and replaces everything esle with # 
regexp_replace(regexp_replace(val, '(~?([^~]+_NOTES_[^~]+)~?)|(.)','#\2#'),'#{2,}','#') y --removes consecutive #s 
from 
test t 

Results

|                                                          VAL |                                                                                                      X |                        Y | 
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------| 
|                                          VANHOOYJ_NOTES_27/03/2015_Site switching out ~VANHOOYJ_POSTPONE_27 |                                                                       #VANHOOYJ_NOTES_27/03/2015_Site switching out ################################################################################ |             #VANHOOYJ_NOTES_27/03/2015_Site switching out # | 
|                                                      FABISHD_POSTPONE_31 |                                                                                   ############################################################################# |                        # | 
|                                             FABISHD_NOTES_31/03/2015_GE enquiry~FABISHD_POSTPONE_31 |                                                                          #FABISHD_NOTES_31/03/2015_GE enquiry############################################################################## |               #FABISHD_NOTES_31/03/2015_GE enquiry# | 
|                                            CAMERONR_NOTES_31/03/2015_booked sr ~CAMERONR_POSTPONE_31 |                                                                         #CAMERONR_NOTES_31/03/2015_booked sr ################################################################################ |               #CAMERONR_NOTES_31/03/2015_booked sr # | 
|                                                      FABISHD_POSTPONE_01 |                                                                                   ############################################################################# |                        # | 
|                                       CHINGD_POSTPONE_01/04/2015_Postpone_1 03/04/2015 00:00:00~CHINGD_POSTPONE_04 |                                                      ############################################################################################################################################################################################### |                        # | 
|                                             FABISHD_NOTES_31/03/2015_GE enquiry~FABISHD_POSTPONE_31 |                                                                          #FABISHD_NOTES_31/03/2015_GE enquiry############################################################################## |               #FABISHD_NOTES_31/03/2015_GE enquiry# | 
|                                           CHINGD_NOTES_01/04/2015_waiting on switching~CHINGD_POSTPONE_01 |                                                                        #CHINGD_NOTES_01/04/2015_waiting on switching############################################################################ |             #CHINGD_NOTES_01/04/2015_waiting on switching# | 
| FABISHD_NOTES_19/03/2015_Needs to be completed by switching~FABISHD_POSTPONE_19/03/2015_Postpone_1 26/03/2015 00:00:00~FABISHD_NOTES_26/03/2015_Switching~FABISHD_POSTPONE_26/03/2015_Postpone_1 30/03/2015 00:00:00~CHINGD_POSTPONE_30 | #FABISHD_NOTES_19/03/2015_Needs to be completed by switching######################################################################################################################FABISHD_NOTES_26/03/2015_Switching################################################################################################################################################################################################## | #FABISHD_NOTES_19/03/2015_Needs to be completed by switching#FABISHD_NOTES_26/03/2015_Switching# | 
|            CHINGD_NOTES_27/03/2015_GEN2360163 to confirm read~CHINGD_POSTPONE_27/03/2015_Postpone_1 01/04/2015 00:00:00~CHINGD_POSTPONE_29/03/2015_Postpone_1 02/04/2015 00:00:00~CHINGD_POSTPONE_04 |            #CHINGD_NOTES_27/03/2015_GEN2360163 to confirm read#################################################################################################################################################################################################################################################################################################################### |            #CHINGD_NOTES_27/03/2015_GEN2360163 to confirm read# | 
|                                       CHINGD_POSTPONE_29/03/2015_Postpone_1 02/04/2015 00:00:00~CHINGD_POSTPONE_04 |                                                      ############################################################################################################################################################################################### |                        # | 
|                                           CHINGD_NOTES_01/04/2015_waiting on switching~CHINGD_POSTPONE_01 |                                                                        #CHINGD_NOTES_01/04/2015_waiting on switching############################################################################ |             #CHINGD_NOTES_01/04/2015_waiting on switching# | 
|                        FABISHD_NOTES_30/03/2015_Unsure where to credit units to.~FABISHD_POSTPONE_30/03/2015_Postpone_1 31/03/2015 00:00:00~CAMERONR_POSTPONE_31 |                                      #FABISHD_NOTES_30/03/2015_Unsure where to credit units to.###################################################################################################################################################################################################### |          #FABISHD_NOTES_30/03/2015_Unsure where to credit units to.# | 

感謝@Jorge Campos爲sqlfiddle。

+0

謝謝。完善。 – Deamo

相關問題