关于DB2中使用SUBSTR函数出现“SUBSTR函数的第二个或第三个自变

来源:未知 责任编辑:智问网络 发表时间:2013-09-22 21:29 点击:
p>关于DB2中使用SUBSTR函数出现“SUBSTR函数的第二个或第三个自变量超出范围。  SQLSTATE=22011”错误的解决方法

p> 

p>对于表A,定义如下:

p>CREATE TABLE A

p>(

p>    REMARK VARCHAR(20)

p>);

p>INSERT INTO A(REMARK) VALUES('ABC');

p>INSERT INTO A(REMARK) VALUES('DEF');

p>INSERT INTO A(REMARK) VALUES('HI#JK');

p>执行SQL:SELECT SUBSTR(REMARK,1,2) AS REMARK FROM A;返回数据如下:

p>------------------

p>| REMARK         |

p>------------------

p>| AB             |

p>| DE             |

p>| HI             |

p>------------------

p>而执行SQL:SELECT SUBSTR(REMARK,1, (LOCATE( '#', REMARK) -1 ) AS REMARK FROM A;

p>却出现错误:SUBSTR 函数的第二个或第三个自变量超出范围。  SQLSTATE=22011

p>查看LOCATE函数返回的结果可知,部分记录中SUBSTR函数的第三个参数为-1,而导致变量超出范围。

p> 

p>执行SQL:SELECT LOCATE( '#', REMARK) -1 AS LOC FROM A;返回数据如下:

p>------------------

p>| LOC            |

p>------------------

p>| -1             |

p>| -1             |

p>| 2              |

p>------------------

p>所以SUBSTR与LOCATE函数一起使用时,对于要定位的字符不存在时,需要做特殊处理。

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • db2管理工具小结
    • DB2数据库的导出与导入(Windows客户端)
    • db2 CLP中如何换行
    • DB2查看表结构及所用表语句
    • DB2 · CREATE TABLESPACE
    • 使用DB2对象:创建模式、表和视图
    • DB2数据库逻辑卷的复制
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1