是否可以只从列 DB2 中获取非字母、英文字母和非数字



有时我在数据库中得到 Ÿ(十六进制 C5B8:2 个字节,1 个字符),我有一个脚本来处理多个无法读取该数据的数据,因为它不知道如何处理它,所以它会停止整个过程,我必须进入我的日志并查看错误在哪里,以便我可以重新启动整个过程。

我想执行一个查询,该查询仅给我不在英文字母表中的字符,以便我可以查看是否应该更改它们。

我试图只查找 UTF8 字符,但 Ÿ 是 UTF8 字符,所以我需要再找一个 aproach。

包含以下以外的词语:

A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z

和数字

0-1-2-3-4-5-6-7-8-9

不包括阿尔帕数字(以防有人写这样的地址)

h3ll0

我在想这样的事情:

SELECT * FROM myTable WHERE myCol != (/^[A-Za-z]+$/)

像这样的东西,我只得到包含不属于英文字母或数字 0-9 的字符的列

我不确定我是否正确理解了你。基本上,您想查找所有包含字符不在英文字母中的单词的列吗?如果是这样,这可能有效:

SELECT * FROM `myTable` WHERE `myCol` NOT REGEXP '[A-Za-z0-9]'

编辑:这个答案是为这个问题的旧标签"mySQL"编写的,你已经把它改成了db2。我尝试为 db2 11 修改它,但这充其量只是一个有根据的猜测:

SELECT * FROM `myTable` WHERE `myCol` NOT REGEXP_LIKE '[A-Za-z0-9]'

查看

翻译

函数 - 参见文档

将所有常规字符和数字转换为空字符串 - 例如:

select translate(mycol, '', 'ABCDEFGabcdefghi1234567890')
from mytable

这不是完整的解决方案,但您应该明白这个想法。这适用于 DB2 LUW,并且可在 i 系列中使用。

最新更新