如何在DB2中查找具有DBCException:SQL错误:CharConversionExcetion的行?

问题描述

我试图在表中查找行,该行似乎在单元格值中包含DBCException。 我似乎找不到一种快速方法来找出具有此异常的唯一行。

存储在单元格中的错误

DBCException:sql错误:[jcc] [t4] [1065] [12306] [4.18.60]被捕获 java.io.CharConversionException。有关详细信息,请参见随附的Throwable。 ERRORCODE = -4220,sqlSTATE =空

PrimaryKey SomeColumn

1          A

2          B

3          C

4          DBCException: sql Error...

5          DBCException: sql Error...

搜索时,这是我在此问题上获得一些帮助的唯一链接https://www.ibm.com/support/pages/sqlexception-message-caught-javaiocharconversionexception-and-errorcode-4220

作为诊断,它提到要找到Hex(col)。 但是,我似乎无法缩小出现错误的行的范围,以便我可以对其进行修复。

我能够找出哪一列有错误。 我的问题是,如何缩小行数?

解决方法

我已经弄清楚了如何查询有异常的行。 因此,例外是关于无效字符,因此我们将通过以下方式缩小结果范围:

  1. 选择所有具有非空值的行
  2. 选择所有具有有效字符的行
  3. 减去两个数据集,您将获得包含无效字符的行。

查询: var userId = User.FindFirst(ClaimTypes.NameIdentifier).Value

现在,您还可以通过以下方法删除无效字符来替换受影响的行中的内容。

更新表 SET列= regexp_replace(column,'[^ a-zA-Z- \ d]','') 在哪里 ( 选择编号 ( 选择编号 从表 WHERE栏不为空 减去 选择编号 从表 其中TRANSLATE(TRANSLATE(TRANSLATE(column,'','!@#$%^&*()-= + / {} []; ::,?ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'),'','''''' ))='' AND栏不为空 ))