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。
 
 
 
 

转载于:https://www.cnblogs.com/zbj815/p/6864298.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值