oracle 汉字替换空格,Oracle REGEXP_REPLACE用空字符串替换中间的空格

[: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>