我有允许在提取文件上的有效字符列表。我需要用oracle SQL语句替换所有其他字符。 有效字符是
'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M' 'N' 'O' 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z' 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z' '1' '2' '3' '4' '5' '6' '7' '8' '9' '0' '/' '-' '(' ')' '.' ',' '{' '}' '-' '?' ':' “ ’ “
我正在尝试使用REGEXP_REPLACE进行否定查找,但这对我不起作用。请帮忙。
答案 0 :(得分:0)
实现目标的一种方法是使用regexp_instr而不是regexp_replace,并使用围绕它的情况返回空格字符,以防它返回0。 这个解决方案的缺点是你必须单独检查字符串中的每个字符,这可能非常耗时。
答案 1 :(得分:0)
试试这个
select regexp_replace('A12A6/6gj/-().,{}-?:“''“!@#$%^&*()_+= ' , '[^A-Z,a-z,0-9,/,-,(,),.,\,,{,},-,?,:,“,\’]' , ' ') from dual
Output
A12A6/6gj/ ().,{} ?:“ “ ()
如果我错过了任何其他字符,请在regexp_replace的第二个参数内添加任何其他字符(在[]
内)。