问题描述
我运行以下语句将“..”的字符替换为“.”:
CREATE TABLE TableA AS
SELECT Column1,REGEXP_REPLACE(Column2,"..",".") AS NewColumn
FROM TableB;
NewColumn 的结果变成了“.......”,REGEXP_REPLACE() 函数有什么问题?
解决方法
regexp_replace
需要正则表达式模式。 .
表示正则表达式中的任何字符,因此所有字符对都被替换为句号,因为您将 ..
指定为正则表达式模式。
为了防止这种情况,你可以逃避句号:
REGEXP_REPLACE(Column2,"\\.\\.",".")
或使用 replace
,它需要一个字符串模式:
REPLACE(Column2,"..",".")
,
除了@mck 建议的之外,您还可以使用量词来重复模式
REGEXP_REPLACE(Column2,"\\.{2}",".")
或者如果您想用一个点替换 2 个或更多点:
REGEXP_REPLACE(Column2,"\\.{2,}",".")