问题描述
我试图在表中查找行,该行似乎在单元格值中包含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)。 但是,我似乎无法缩小出现错误的行的范围,以便我可以对其进行修复。
我能够找出哪一列有错误。 我的问题是,如何缩小行数?
解决方法
我已经弄清楚了如何查询有异常的行。 因此,例外是关于无效字符,因此我们将通过以下方式缩小结果范围:
- 选择所有具有非空值的行
- 选择所有具有有效字符的行
- 减去两个数据集,您将获得包含无效字符的行。
查询:
var userId = User.FindFirst(ClaimTypes.NameIdentifier).Value
现在,您还可以通过以下方法删除无效字符来替换受影响的行中的内容。
更新表 SET列= regexp_replace(column,'[^ a-zA-Z- \ d]','') 在哪里 ( 选择编号 ( 选择编号 从表 WHERE栏不为空 减去 选择编号 从表 其中TRANSLATE(TRANSLATE(TRANSLATE(column,'','!@#$%^&*()-= + / {} []; ::,?ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'),'','''''' ))='' AND栏不为空 ))