• Oracle字符窜操作函数


    关于instr的用法是从 http://www.cnblogs.com/Xrinehart/archive/2005/04/21/142791.html 转帖过来的.

    INSTR方法的格式为
    INSTR(源字符串, 目标字符串, 起始位置, 匹配序号)

    例如:INSTR(
    'CORPORATE FLOOR','OR'32)中,源字符串为'CORPORATE FLOOR', 目标字符串为'OR',起始位置为3,取第2个匹配项的位置。

    默认查找顺序为从左到右。当起始位置为负数的时候,从右边开始查找。

    所以SELECT INSTR(
    'CORPORATE FLOOR''OR'-11) "Instring" FROM DUAL的显示结果是

    Instring
    ——————
    14

    translate vs. replace

    translate(src,from_str,to_str): 如果src中存在from_str,那么此时translate的功能就相当于replace,直接将源字符窜src中所有的from_str全部替换成to_str.但是如果src中只包含了from_str的部分,此情况就有点不一样了.

    1.select translate('12o12o12o','12','1'),replace('12o12o12o','12','1'from dual;
    在这个例子里面,translate和replace起到的作用是相同的.

    2.select TRANSLATE('kkaxksx''kx''12'),TRANSLATE('kkaxksx''kks''12')from dual ;

    TRANSLATE(
    'kkaxksx''kx''12')    TRANSLATE('kkaxksx''kks''12')
    -----------------------------------------------------------------------
    11a21s2                              11ax1x

    translate将
    'kx''12'按字符分别进行对应,它会把'kkaxksx'中所有的'k'->'1','x'->'2'(在replace中是不会把from_str进行分解的,而是把它当成一个整体). 
    当from_str的长度大于to_str时,如from_str:
    'kxs',to_str:'12',则的'k'->'1','x'->'2','s'->'';最后的一位就对应空窜了.

    而在第二个替换中,from_str中有重复的值
    'k',那么在与to_str进行映射的过程中,则采用如下方式:
    'k'->'1',由于'k'已经映射过,所以第二位不进行匹配,但是from_str和to_str的字符映射指针都会向后移一位,最终就导致to_str的第二位被忽略.那么from_str的第三位则只能匹配''空窜.
  • 相关阅读:
    C#时间格式转换问题(12小时制和24小时制)
    ajax跨域请求webservice webconfig配置
    C#时间戳转化为DateTime
    C#生成缩略图
    codeforces-1348-C Phoenix and Distribution
    P4314 CPU监控
    YangK's dfs序与树链剖分
    Yangk's 静态主席树
    P2253 好一个一中腰鼓!
    codeforces-1341D-Nastya and Scoreboard 记忆化搜索
  • 原文地址:https://www.cnblogs.com/ungshow/p/1307165.html
Copyright © 2020-2023  润新知