Oracle
Oracle PL-SQL“正則表達式”將字元串中的每個“(空格)和(空格)”替換為“,”
我有一個這樣的字元串
x=y and g=h and u=1
,我需要(space)and(space)
用,
. 我regular_expression
為此使用了強大的功能,但它並沒有給我想要的結果。select regexp_replace('x=y and g=h and u=1','(^[[:space:]]*)AND(^[[:space:]]*)', ',') from dual;
我想知道你是否可以在這裡幫助我。提前致謝。
如果格式始終恰好是小寫字母兩側的一個空格
and
,那麼您不需要regexp_replace
像普通的舊格式replace
那樣:with demo (str) as ( select 'x=y and g=h and u=1' from dual ) select str , replace(str, ' and ', ',') as plain_replace from demo; STR PLAIN_REPLACE ------------------- ------------------- x=y and g=h and u=1 x=y,g=h,u=1
如果空格數可以變化,則需要正則表達式:
with demo (str) as ( select 'x=y and g=h and u=1' from dual ) select str , replace(str, ' and ', ',') as plain_replace , regexp_replace(str, '\s+and\s+', ',') as one_or_more_spaces from demo;
STR PLAIN_REPLACE ONE_OR_MORE_SPACES ----------------------- ---------------------- --------------------------- x=y and g=h and u=1 x=y ,g=h, u=1 x=y,g=h,u=1
+
表示一個或多個,與之相反,*
它表示零或多個。例如,我假設您不想Band in Spandex
替換為B,in Sp,ex
.為了安全起見,我使用了Perl 風格的
\s
(空白)運算符而不是文字空格字元,因為這也將匹配任何製表符。