程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 關於DB2中使用SUBSTR函數出現“SUBSTR函數的第二個或第三個自變量超出范圍。SQLSTATE=22011”錯誤

關於DB2中使用SUBSTR函數出現“SUBSTR函數的第二個或第三個自變量超出范圍。SQLSTATE=22011”錯誤

編輯:DB2教程

關於DB2中使用SUBSTR函數出現“SUBSTR函數的第二個或第三個自變量超出范圍。  SQLSTATE=22011”錯誤的解決方法   對於表A,定義如下: CREATE TABLE A (     REMARK VARCHAR(20) ); INSERT INTO A(REMARK) VALUES('ABC'); INSERT INTO A(REMARK) VALUES('DEF'); INSERT INTO A(REMARK) VALUES('HI#JK'); 執行SQL:SELECT SUBSTR(REMARK,1,2) AS REMARK FROM A;返回數據如下: ------------------ | REMARK         | ------------------ | AB             | | DE             | | HI             | ------------------ 而執行SQL:SELECT SUBSTR(REMARK,1, (LOCATE( '#', REMARK) -1 ) AS REMARK FROM A; 卻出現錯誤:SUBSTR 函數的第二個或第三個自變量超出范圍。  SQLSTATE=22011 查看LOCATE函數返回的結果可知,部分記錄中SUBSTR函數的第三個參數為-1,而導致變量超出范圍。   執行SQL:SELECT LOCATE( '#', REMARK) -1 AS LOC FROM A;返回數據如下: ------------------ | LOC            | ------------------ | -1             | | -1             | | 2              | ------------------ 所以SUBSTR與LOCATE函數一起使用時,對於要定位的字符不存在時,需要做特殊處理。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved