发布于 2012-07-31 21:33:13
MySQL提供了全面的字符集管理,可以帮助解决此类问题。
SELECT whatever
FROM tableName
WHERE columnToCheck <> CONVERT(columnToCheck USING ASCII)
CONVERT(col USING charset)
函数将无法转换的字符转换为替换字符。然后,转换的文本和未转换的文本将是不相等的。
请参阅此以了解更多讨论。https://dev.mysql.com/doc/refman/8.0/en/charset-repertoire.html
您可以使用您希望的任何字符集名称来代替ASCII。例如,如果您想要找出哪些字符在代码页1257 (立陶宛、拉脱维亚、爱沙尼亚)中不能正确呈现,请使用CONVERT(columnToCheck USING cp1257)
发布于 2009-08-09 22:58:56
可以将ASCII定义为十进制值为0- 127 (0x00 - 0x7F)的所有字符,并使用以下查询查找包含非ASCII字符的列
SELECT * FROM TABLE WHERE NOT HEX(COLUMN) REGEXP '^([0-7][0-9A-F])*$';
这是我能想到的最全面的查询。
发布于 2009-03-12 16:00:08
这可能就是你要找的:
select * from TABLE where COLUMN regexp '[^ -~]';
它应返回列中包含非ASCII字符(或不可打印的ASCII字符,如换行符)的所有行。
https://stackoverflow.com/questions/401771
复制相似问题