发布于 2008-12-30 23:19:12
这取决于您定义为"ASCII“的确切内容,但我建议尝试以下查询的变体:
SELECT * FROM tableName WHERE columnToCheck NOT REGEXP '[A-Za-z0-9]';该查询将返回columnToCheck包含任何非字母数字字符的所有行。如果您有其他可接受的字符,请将它们添加到正则表达式的字符类中。例如,如果句点、逗号和连字符都可以,则将查询更改为:
SELECT * FROM tableName WHERE columnToCheck NOT REGEXP '[A-Za-z0-9.,-]';可能是MySQL文档中最相关的页面。
发布于 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])*$';这是我能想到的最全面的查询。
https://stackoverflow.com/questions/401771
复制相似问题