以下是OCP教材中对该函数的描述
RTRIM(<c1>,<c2> ) takes two arguments, where c1 and c2 are character
strings. This function returns c1 without any trailing characters that appear
in c2. If no c2 characters are trailing characters in c1, then c1 is returned
unchanged. c2 defaults to a single space.
大家对Rtrim舍去字符串右边的空字符串是毫无疑问的
有疑问的应该是右边是字符串如何处理的。
例如:
结果为:
从右往左开始,字符串的第一个字符为'i',匹配,需要删掉,
然后字符串的第二个字符为'p',也匹配,需要删除,
然后字符串的第三个字符为‘p’,也匹配,需要删除,
然后字符串的第四个字符为‘i’,也匹配,需要删除,
然后字符串的第五个字符‘s’,既不匹配字符'i'也不匹配字符'p',停止匹配
从右往左开始,字符串的第一个字符为'i',匹配,需要删掉,
然后字符串的第二个字符为'p',也匹配,需要删除,
然后字符串的第三个字符为‘p’,也匹配,需要删除,
然后字符串的第四个字符为‘i’,也匹配,需要删除,
然后字符串的第五个字符为‘s’,也匹配,需要删除,
然后字符串的第六个字符为‘s’,也匹配,需要删除,
然后字符串的第七个字符为‘i’,也匹配,需要删除,
然后字符串的第八个字符为‘s’,也匹配,需要删除,
然后字符串的第九个字符为‘s’,也匹配,需要删除,
然后字符串的第十个字符为‘i’,也匹配,需要删除,
然后字符串的第十一个字符‘M’,既不匹配字符's'也不匹配字符'i'也不匹配字符'p',停止匹配
RTRIM(<c1>,<c2> ) takes two arguments, where c1 and c2 are character
strings. This function returns c1 without any trailing characters that appear
in c2. If no c2 characters are trailing characters in c1, then c1 is returned
unchanged. c2 defaults to a single space.
大家对Rtrim舍去字符串右边的空字符串是毫无疑问的
有疑问的应该是右边是字符串如何处理的。
例如:
SELECT RTRIM('Mississippi','ip') test1, RTRIM('Rpadded ') test2, RTRIM('Mississippi','sip') test3 FROM dual;
结果为:
test1 test3 test3
Mississ Rpadded M
分析:
test1的实现
首先从字符串'Mississippi'右边开始往左边查找'ip'中的任意字符,如果是'i'字符或者'p'字符匹配就需要删除,都不是就停止匹配从右往左开始,字符串的第一个字符为'i',匹配,需要删掉,
然后字符串的第二个字符为'p',也匹配,需要删除,
然后字符串的第三个字符为‘p’,也匹配,需要删除,
然后字符串的第四个字符为‘i’,也匹配,需要删除,
然后字符串的第五个字符‘s’,既不匹配字符'i'也不匹配字符'p',停止匹配
所以结果应该是Mississ
test2的实现
去掉字符串从右往左的空格直到,非空字符为止
test3的实现
首先从字符串'Mississippi'右边开始往左边查找'sip'中的任意字符,如果是's'字符或者'i'字符或者'p'字符匹配就需要删除,都不是就停止匹配从右往左开始,字符串的第一个字符为'i',匹配,需要删掉,
然后字符串的第二个字符为'p',也匹配,需要删除,
然后字符串的第三个字符为‘p’,也匹配,需要删除,
然后字符串的第四个字符为‘i’,也匹配,需要删除,
然后字符串的第五个字符为‘s’,也匹配,需要删除,
然后字符串的第六个字符为‘s’,也匹配,需要删除,
然后字符串的第七个字符为‘i’,也匹配,需要删除,
然后字符串的第八个字符为‘s’,也匹配,需要删除,
然后字符串的第九个字符为‘s’,也匹配,需要删除,
然后字符串的第十个字符为‘i’,也匹配,需要删除,
然后字符串的第十一个字符‘M’,既不匹配字符's'也不匹配字符'i'也不匹配字符'p',停止匹配
所以结果应该是M
自我测试题:
SELECT RTRIM('Mississippi','Misp') test1, RTRIM('Mississippi','i') test2 FROM dual;
test1 test2
Mississipp