去除非数字字符,破折号和竖线

时间:2018-08-24 01:39:10

标签: oracle12c

我正在尝试找到一种解决方案,但是以某种方式我得到了错误的输出(参考了一些在线解决方案并使自己感到困惑。请告知我要去哪里了。

我需要删除任何非数字字符,破折号“-”或竖线“ |”使用plsql。

例如: 如果我需要过滤字符串String js = "arguments[0].style.display='block'"; ((JavascriptExecutor) driver).executeScript(js, clientDropDown); Select client = new Select(clientDropDown); client.selectByVisibleText("DGX Client"); ,则输出应为0094-78556232_imk*.ext|4444;

2 个答案:

答案 0 :(得分:1)

使用REGEXP_REPLACE

SELECT
    col,
    REGEXP_REPLACE (col, '[^0-9|-]', '') AS col_updated
FROM yourTable;

enter image description here

Demo

答案 1 :(得分:0)

请勿使用regexp_replace,尤其是在性能很重要的情况下。

请使用标准字符串函数TRANSLATE。像这样:

select col,
       translate(col, '0123456789|-' || col, '01234567890|-') as col_updated
from   yourTable;

这将根据以下方案转换col值中的每个字符:0被转换为自身,....,-被转换为自身。 col中尚未在此列表中的任何其他字符都被“翻译”为任何内容,因为在该函数的第三个参数中没有任何要翻译的字符。因此,那些不在列表中的字符将从字符串中删除。