這個**塊執行之後螢幕上會顯示什麼?
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。
substr 函式 詳解及應用
substr的函式格式 俗稱 字元擷取函式 格式1 substr string string,int a,int b 格式2 substr string string,int a 解析 格式1 1 string 需要擷取的字串 2 a 擷取字串的開始位置 注 當a等於0或1時,都是從第一位開始擷取 ...
Oracle中的substr 函式詳解案例
1 substr函式格式 俗稱 字元擷取函式 格式1 substr string string,int a,int b 格式2 substr string string,int a 解釋 格式11 string 需要擷取的字串 2 a 擷取字串的開始位置 注 當a等於0或1時,都是從第一位開始擷取 ...
ORACL instr 函式 substr函式
oracle函式instr用法 在oracle plsql中,instr函式返回要擷取的字串在源字串中的位置。只檢索一次,就是說從字元的開始到字元的結尾就結束。語法如下 instr 源字串,目標字串,起始位置,匹配序號 string1 源字串,要在此字串中查詢。string2 要在string1中查...