nlssort 排序功能
SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序)排序
SCHINESE_STROKE_M 按照笔划(第一顺序)、部首(第二顺序)排序
SCHINESE_PINYIN_M 按照拼音排序
拼音 SELECT * FROM TEAM ORDER BY NLSSORT(队名,'NLS_SORT = SCHINESE_PINYIN_M')
TRANSLATE功能
TRANSLATE ( 'string' , 'from_string' , 'to_string' )
TRANSLATE返回将from_string中的每个字符替换为to_string中的相应字符以后的string
如果from_string中出现了string中有的字符,则string中该字符将被替换成to_string中相对应的字符,如果from_string中出现了与string对应的字符而to_string中没有相对应的字符(from_string比to_string长)则该字符将被删除,不会出现在translate后的字符串中。
TRANSLATE是REPLACE所提供的功能的一个超集。如果from_string比to_string长,那么在from_string中而不在to_string中的额外字符将从char中被删除,因为它们没有相应的替换字符。to_string不能为空。Oracle将空字符串解释为NULL,并且如果TRANSLATE中的任何参数为NULL,那么结果也是NULL。
举个例子
select translate('123abc','2dc','4e') from dual;
因为from_string和to_string的位置是一一对应的,2对应4,d对应e,c没有对应的值,所以c应该会被删除。
所以例子的字符里的2会替换为4,
d因为字符串里没有,所以不作替换,
c由于没有对应的替换字符,所以字符串里的c会被删除
那么可以得出,结果是
143ab
regexp_replace
6个参数
第一个是输入的字符串
第二个是正则表达式
第三个是替换的字符
第四个是标识从第几个字符开始正则表达式匹配。(默认为1)
第五个是标识第几个匹配组。(默认为全部都替换掉)
第六个是是取值范围:
i:大小写不敏感;
c:大小写敏感;
n:点号 . 不匹配换行符号;
m:多行模式;
x:扩展模式,忽略正则表达式中的空白字符。
全部测试数据
SQL> select * from test_reg_substr;
A
-----------------------------------
ABC123XYZ
ABC123XYZ456
<Name>Edward</Name>
替换数字
SQL> SELECT
2 REGEXP_REPLACE (a,'[0-9]+','QQQ') AS A
3 FROM
4 test_reg_substr;
A
-----------------------------------------------
ABCQQQXYZ
ABCQQQXYZQQQ
<Name>Edward</Name>
替换数字(从第一个字母开始匹配,替换第1个匹配项目)
SQL> SELECT
2 REGEXP_REPLACE (a,'[0-9]+','QQQ', 1, 1) AS A
3 FROM
4 test_reg_substr;
A
------------------------------------------------------
ABCQQQXYZ
ABCQQQXYZ456
<Name>Edward</Name>
替换数字(从第一个字母开始匹配,替换第2个匹配项目)
SQL> SELECT
2 REGEXP_REPLACE (a,'[0-9]+','Q', 1, 2) AS A
3 FROM
4 test_reg_substr;
A
---------------------------------------------------
ABC123XYZ
ABC123XYZQ
<Name>Edward</Name>
替换第二个单词
SQL> SELECT
2 REGEXP_REPLACE (a,'\w+','Kimi', 1, 2) AS A
3 FROM
4 test_reg_substr;
A
---------------------------------------------------
ABC123XYZ
ABC123XYZ456
<Name>Kimi</Name>