sql使用正则表达式替换字符中的一个字

替换某个字段中某一个字
有这样一个需求,替换memo字段中的一个字,例如,将“XXX应付”都替换成“XXX实付”,其他字不变。传统的UPDATE语句做这种更新是非常麻烦的,从10g开始,我们可以使用正则表达式来实现。
select regexp_replace(memo, ' ' , ' ' ) from table_a where code = '102';
update table_a a set memo = regexp_replace(memo, ' ' , ' ' ) where a.code = '102';
其他正则函数介绍
Regexp_like:正则like
SELECT first_name, last_name
FROM employees
WHERE REGEXP_LIKE (first_name, '^Ste(v|ph)en
 
FIRST_NAME LAST_NAME
-------------------- -------------------------
Steven King
Steven Markle
Stephen Stiles
Regexp_instr:判断符合正则条件的位数
'500 Oracle Parkway, Redwood Shores, CA' 源字符串
'[s|r|p][[:alpha:]]{6}' 正则模式,以 s|r|p 开头, 6 个字母
3 开始位置,默认是 1
2 Oracle 搜索满足第 2 个模式的发生,默认是 1
1 返回满足模式的后面的字符串,默认是 0
i 大小写不敏感
SELECT
REGEXP_INSTR('500 Oracle Parkway, Redwood Shores, CA',
 '[s|r|p][[:alpha:]]{6}', 3, 2, 1, 'i') "REGEXP_INSTR"
FROM DUAL;
 
REGEXP_INSTR
------------
 28
Regexp_substr
取子串
SELECT
REGEXP_SUBSTR('http://www.oracle.com/products',
 'http://([[:alnum:]]+\.?){3,4}/?') "REGEXP_SUBSTR"
FROM DUAL;
 
REGEXP_SUBSTR
----------------------
http://www.oracle.com/
Wonder
2008-03-20 );
___FCKpd___3
___FCKpd___4
___FCKpd___5
___FCKpd___6
___FCKpd___7
___FCKpd___8
Regexp_instr:判断符合正则条件的位数
'500 Oracle Parkway, Redwood Shores, CA' 源字符串
'[s|r|p][[:alpha:]]{6}' 正则模式,以 s|r|p 开头, 6 个字母
3 开始位置,默认是 1
2 Oracle 搜索满足第 2 个模式的发生,默认是 1
1 返回满足模式的后面的字符串,默认是 0
i 大小写不敏感
___FCKpd___9
___FCKpd___10
___FCKpd___11
___FCKpd___12
___FCKpd___13
___FCKpd___14
___FCKpd___15
___FCKpd___16
Regexp_substr
取子串
___FCKpd___17
___FCKpd___18
___FCKpd___19
___FCKpd___20
___FCKpd___21
___FCKpd___22
___FCKpd___23
___FCKpd___24
Wonder
2008-03-20

你可能感兴趣的:(oracle,sql,正则表达式)