【问题标题】:Replace all instances with REGEXP_REPLACE in PLSQL用 PLSQL 中的 REGEXP_REPLACE 替换所有实例
【发布时间】:2015-06-11 11:01:01
【问题描述】:

我一直在尝试使用 PLSQL 中的 REGEXP_REPLACE 替换给定字符串中关键字 POSTPONE 周围的所有文本。

如果有两个 POSTPONE 音符彼此相邻,则仅替换第一个实例。

下面是我一直在研究的例子

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 是这样的:

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

【问题讨论】:

  • 是的,谢谢,这适用于该示例。我添加了其他示例,这也需要适用。
  • 当没有_notes_ 相关?
  • Null 最好。但是,当前的 SQL 将这些字段保留为 #,这对我的目的来说很好。
  • 当有两次你想要然后 2 或只是第一次?

标签: regex plsql


【解决方案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。

【讨论】:

    猜你喜欢
    • 2020-12-26
    • 2019-06-09
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 2023-01-12
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多