[:alphanum:]
alphanum
是incorrrect。字母數字字符類是[[:alnum:]]
。
您可以使用下面的模式在REGEXP_REPLACE:如果您不知道字符在每個表達式數量
([[:alnum:]]{4})([[:space:]]{1})([[:digit:]]{3})([[:space:]]{1})([[:alpha:]]{3})
使用REGEXP
SQL> SELECT REGEXP_REPLACE('R4SX 315 GFX',
2 '([[:alnum:]]{4})([[:space:]]{1})([[:digit:]]{3})([[:space:]]{1})([[:alpha:]]{3})',
3 '\1\2\3\5')
4 FROM DUAL;
REGEXP_REPL
-----------
R4SX 315GFX
SQL>
的模式,那麼你可以這樣做:
SQL> SELECT REGEXP_REPLACE('R4SX 315 GFX',
2 '([[:alnum:]]+[[:blank:]]+[[:digit:]]+)[[:blank:]]+([[:alpha:]]+)',
3 '\1\2')
4 FROM dual;
REGEXP_REPL
-----------
R4SX 315GFX
SQL>
使用SUBSTR和INSTR
同樣可以用SUBSTR和INSTR這wouldbe少消耗資源比正則表達式來完成。
SQL> WITH DATA AS
2 (SELECT 'R4SX 315 GFX' str FROM DUAL
3 )
4 SELECT SUBSTR(str, 1, instr(str, ' ', 1, 2) -1)
5 ||SUBSTR(str, instr(str, ' ', 1, 2) +1, LENGTH(str)-instr(str, ' ', 1, 2)) new_str
6 FROM DATA;
NEW_STR
-----------
R4SX 315GFX
SQL>
它應該是'alnum',而不是'alphanum' – Noel
感謝您的快速回復。但是在發佈這個問題之前我曾嘗試過。仍然是同樣的結果。 :( – Asela