zoukankan      html  css  js  c++  java
  • SUBSTR()函数详解

    这个代码块执行之后屏幕上会显示什么?
    BEGIN
       DBMS_OUTPUT.put_line ('-3,2='||SUBSTR ('abdefg', -3, 2));
       DBMS_OUTPUT.put_line ('-7,2='||SUBSTR ('abdefg', -7, 2));
    END;
    /
    (A) 
    未处理的异常:
    ORA-01426: numeric overflow
    (B) 
    -3,2= -7,2=
    (C) 
    -3,2=ef -7,2=
    (D) 
    -3,2=ed -7,2=
    (E) 
    -3,2=ef
    -7,2=ab

    答案:C

    解答:

    1.DBMS_OUTPUT.put_line ('-3,2='||SUBSTR ('abdefg', -3, 2));
    SUBSTR ('abdefg', -3, 2)的第二个参数为-3,即从倒数第三位开始查找,第三个参数为2,即截取两位字符。故结果为ef
    2.DBMS_OUTPUT.put_line ('-7,2='||SUBSTR ('abdefg', -7, 2));
    SUBSTR ('abdefg', -7, 2)的第二个参数为-7,超出要查找字符串的长度则返回null,不论第三个参数要截取多少位。
    对于第二条语句的回答在实际验证后参考了2楼的回答。官方文档上竟然对这种超出查找长度的情况进行解释。
    另外补充一点:
          SUBSTR ('abdefg', -7, 2),SUBSTR ('abdefg', 7, 2)
          substr()函数的第二个参数的值不论正负,只要超出所要查询字符串的长度,结果皆为null。
          SUBSTR ('abdefg', 5, -1)
          substr()函数的第三个参数为负数,结果也为null。
     
     
     
     
  • 相关阅读:
    搭建本地源
    shell中tar加密打包
    mysql出现ERROR 1819 (HY000)的解决方法
    mysql 创建用户及授权(2)
    mysql 创建用户及授权(1)
    Redis 工具 redis-port 使用
    mysql中 drop、truncate和delete的区别
    dlerror和dlclose用法
    dlsym用法
    dlopen用法
  • 原文地址:https://www.cnblogs.com/zbj815/p/6864298.html
Copyright © 2011-2022 走看看