我正在编写一个sql,我正在使用regexp_replace函数。
我的目标是用' - '替换'|', '\'
等字符。
我面临的问题是它取代了开头的'+'。
例如:
电话号码为:+49 |0| 941 78878544
我必须重新打造'|'用' - '。
我的代码是:SELECT regexp_replace(phone,'\D','-') FROM PHONE_TBL WHERE EMPLID = employee;
我得到的输出为:-49--0--941-78878544
此代码会替换space
以及开头的'+'
。
我想要保留'+',如果它在开头,并且如果电话号码中有空格,那么也应该保留。
对于'+',我已经发现我应该匹配字符串的开头,然后,必须检查非数字数字,然后转义,但不能编码。
对于两者之间的空间,类似的方法。
对此有任何帮助,谢谢。
答案 0 :(得分:1)
如果要替换'\'和'|'的所有实例使用' - ',请使用以下内容:
SELECT REGEXP_REPLACE(phone,'[\|\]','-')
FROM phone_tbl
WHERE emplid = employee;
方括号定义了一组要匹配的字符。 '\ |'表示匹配管道字符; '\'表示匹配反斜杠字符。如果要替换反斜杠和管道以外的其他字符,请将它们添加到方括号中。