我的问题是我需要从列中删除所有无效字符,但破折号和括号字符是有效字符。
到目前为止我的sql是:
SELECT REGEXP_REPLACE(column_name, '[^][-0-9a-z]' , '') FROM table_name;
但这不包括短划线字符。
和
SELECT REGEXP_REPLACE(column_name, '[^-][0-9a-z]' , '') FROM table_name;
这也不好。
答案 0 :(得分:3)
有两个解决方案:
1,在匹配字符列表的开头和其他位置使用其中一个:
SELECT REGEXP_REPLACE(column_name, '[^][0-9a-z-]' , '') FROM table_name;
2,使用POSIX整理元素运算符[.character.]
:
SELECT REGEXP_REPLACE(column_name, '[^[.].][.[.][.-.]0-9a-z]' , '') FROM table_name;