db2数据库常用函数

db2数据库常用函数,第1张

1、value函数

用法:select value(id,'') from merchant

如果id为空,返回空,如果id不为空,返回id的值;

2、nvl函数

用法:select nvl(id,'') from merchant

如果id为空,返回空,如果id不为空,返回id的值;

3、substr函数

用法:select substr(src_ip,1,2) from tbl_sybvclear_txn;

从src_ip第一位开始,取两位;

4、length函数

用法:select length(src_ip) from tbl_sybvclear_txn;

计算字符串的长度,不必赘述;

5、ltrim函数,rtrim函数

用法:去掉左侧,右侧的空格;

6、letf函数,right函数

用法:select left(src_ip,3),right(src_ip,3) from tbl_sybvclear_txn;

取src_ip左边3个,右边3个字符串;

7、concat函数

用法:select concat(src_ip,chl_resp) from tbl_sybvclear_txn;

字符串连接,mysql支持三个以上参数,db2只支持两个参数;

8、replace函数

用法:select src_ip,replace(src_ip,'223','55') from tbl_sybvclear_txn;

把src_ip中223全部替换成55;

9、to_char函数,to_date函数,to_timestamp函数

用法:将数值型转成字符型

10、avg函数

用法:select avg(mcht_fee) from tbl_sybvclear_txn;

返回mcht_fee平均值;

11、count函数

用法:太常用,不赘述;

12、sum函数

用法:太常用,不赘述;

13、max函数,min函数

用法:取某列的最大值,最小值;

DB2数据库错误信息:

com.ibm.db2.jcc.b.SqlException: DB2 SQL error: SQLCODE: -407, SQLSTATE: 23502, SQLERRMC: TBSPACEID=2, TABLEID=640, COLNO=0

分析DB2报出的错误信息,主要从六个方面进行分析:

SQLCODE, SQLSTATE, SQLERRMC, TBSPACEID, TABLEID, COLNO

1、先从SQLCODE和SQLSTATE两方面的数字确认是什么原因(见网址:http://www.knowsky.com/538581.html)

2、在根据TBSPACEID和TABLEID两方面确认是哪个表

SQL语句:select * from syscat.tables where tbspaceid="" and tableid=""

3、根据COLNO确认是哪个列出问题

SELECT * FROM SYSCAT.COLUMNS WHERE TABNAME= '*******' AND COLNO = “”

三步就可以精确确认错误的原因了

原理分析:在DB2 数据库中隐藏着一个内部表,专存储数据库的各个表。可以通过select * from syscat.tables进行查看。TBSPACEID, TABLEID, COLNO 都是表tables 中的字段。

=====================================================================

but,

我的DB2数据库错误信息:

com.ibm.db2.jcc.b.SqlException: DB2 SQL error: SQLCODE: -532, SQLSTATE: 23504, SQLERRMC: DE_ANOM_DETN.FK_TT_ANOM_TT_DETN_EVNT

根据SQLCODE和SQLERRMC可知:

-532 23504 删除 *** 作违反了已指定的参照约束

可以判断出,应该是在删除级联表格时,发现参考的外键为空了,应该是提前删除了。

但是我的错误信息里面并没有上面提示的那么详细,上面的是SQLERRMC: TBSPACEID=2, TABLEID=640, COLNO=0 ,而我的是SQLERRMC: DE_ANOM_DETN.FK_TT_ANOM_TT_DETN_EVNT,由此可以推断出,SQLERRMC里面的信息就是定位错误的核心!!可是这个是什么呢??估计这个应该找数据库设计文档了。

最后没管这个问题,直接把DB2恢复(restore)一个镜像点了,然后mq(Qmanager)启动,was启动(前提是mq启动)。问题可能是执行顺序或者因为某个服务器节点未启动caused的,当这些服务器节点都正常启动之后,把数据库restore正常状态,然后就可以正常执行了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9260815.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存