Oracle的REGEXP_REPLACE函数简单⽤法(2021-02-03)使⽤场景:
REGEXP_REPLACE让你搜索的字符串的正则表达式模式REPLACE函数的功能。默认情况下,
该函数返回source_char与replace_string取代了正则表达式模式的每个实例。
返回的字符串是在相同的字符集source_char。
语法:
1 REGEXP_REPLACE(source_char, pattern [, replace_string [, position [, occurrence [, match_parameter ] ] ] ] )
参数:
1.source_char:搜索值的字符表达式。这通常是⼀个字符列,可以是任何数据类型
CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB或NCLOB。
2.pattern :正则表达式
Value Description
^匹配字符串的开头。如果与match_parameter ' m '⼀起使⽤,它将匹配表达式中任何地⽅的⾏开头。
$匹配字符串的结尾。如果与match_parameter ' m '⼀起使⽤,它将匹配表达式中任何地⽅的⾏尾。
*匹配零个或多个.
+匹配⼀个或多个出现.
匹配零次或⼀次出现.
.匹配任何字符,除了空.
|像“或”⼀样⽤于指定多个选择。
[ ]⽤于指定⼀个匹配列表,当您试图匹配列表中的任何⼀个字符时。
[^ ]⽤于指定⼀个⾮匹配列表,在该列表中,您试图匹配除列表中的字符以外的任何字符。
( )⽤于将表达式分组为⼦表达式。
{m}匹配m乘以。
{m,}匹配⾄少m次。
{m,n}匹配⾄少m次,但不超过n次。
\n n是1到9之间的⼀个数字。匹配在遇到\n之前在()中到的第n个⼦表达式。
[..]匹配⼀个可以多于⼀个字符的排序规则元素。
[::]匹配字符类。
[==]匹配等价类。
\d匹配⼀个数字字符.
\D匹配⼀个⾮数字字符.
\w匹配包括下划线的任何单词字符.
\W匹配任何⾮单词字符.
\s匹配任何空⽩字符,包括空格、制表符、换页符等等.
\S匹配任何⾮空⽩字符.
\A匹配字符串的开头或换⾏符之前的字符串结尾。
\Z匹配字符串的末尾。
*?匹配前⾯的模式零次或多次出现。
+?匹配前⾯的模式⼀次或多次。
匹配前⾯的模式零次或⼀次出现。
{n}?匹配上述模式n次。
{n,}?匹配上述模式⾄少n次。
{n,m}?匹配上述模式⾄少n次,但不超过m次。
replace_string
可选。匹配的模式将被替换replace_string字符串。如果省略replace_string参数,
将删除所有匹配的模式,并返回结果字符串。
position
可选。在字符串中的开始位置搜索。如果省略,则默认为1。
occurrence
可选。是⼀个⾮负整数默认为1,指⽰替换操作的发⽣:
如果指定0,那么所有出现将被替换字符串。
如果指定了正整数n,那么将替换第n次出现。
match_parameter
可选。它允许你修改REGEXP_REPLACE功能匹配的⾏为。它可以是以下的组合:
Value Description
‘c’区分⼤⼩写的匹配.
‘i’不区分⼤⼩写的匹配.字符串replace函数
‘n’Allows the period character (.) to match the newline character. By default, the period is a wildcard.
‘m’expression is assumed to have multiple lines, where ^ is the start of a line and $ is the end of a line, regardless of the position of those characters in expression. By default, expression is assumed to be a single line.
‘x’Whitespace characters are ignored. By default, whitespace characters are matched like any other character. EXAMPLE - 匹配第⼀个字
让我们开始使⽤REGEXP_REPLACE函数替换字符串中的第⼀个字。
SELECT REGEXP_REPLACE ('itmyhome is my network id', '^(\S*)', 'luck')
FROM dual;
这个例⼦会返回”luck is my network id”,
因为它会再字符串的开始到第⼀个匹配的字符,然后替换为”luck”
EXAMPLE - 匹配数字字符
我们将使⽤REGEXP_REPLACE函数来匹配单个数字字符模式。
SELECT REGEXP_REPLACE ('2, 5, and 10 are numbers in this example', '\d', '#')
FROM dual;
使⽤案例:获取pubdatestr中的数字
SELECT TEMP.*, to_number(regexp_replace(PUBDATESTR ,'[^0-9]')) AS TIMEDATE FROM (
SELECT ID,
(case
when PUB_DATE_STR ='1天前'THEN'24⼩时前'
when PUB_DATE_STR ='2天前'THEN'48⼩时前'
else PUB_DATE_STR
END ) AS PUBDATESTR ,
TITLE AS TITLE ,
SUMMARY AS SUMMARYA,
INFO_SOURCE AS INFOSOURCE,
SOURCE_URL AS SOURCEURL ,
PUB_DATED AS PUBDATED
FROM IPS_NCVO_NEW
) TEMP
ORDER BY TIMEDATE
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论