首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MySQL中查找非ASCII码字符?

问如何在MySQL中查找非ASCII码字符?
EN

Stack Overflow用户
提问于 2008-12-30 22:54:57
回答 10查看 129.6K关注 0票数 139

我正在使用一个包含一些从Excel导入的数据的MySQL数据库。数据包含非ASCII字符(破折号等)以及隐藏回车符或换行符。有没有办法使用MySQL找到这些记录?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2008-12-30 23:19:12

这取决于您定义为"ASCII“的确切内容,但我建议尝试以下查询的变体:

代码语言:javascript
复制
SELECT * FROM tableName WHERE columnToCheck NOT REGEXP '[A-Za-z0-9]';

该查询将返回columnToCheck包含任何非字母数字字符的所有行。如果您有其他可接受的字符,请将它们添加到正则表达式的字符类中。例如,如果句点、逗号和连字符都可以,则将查询更改为:

代码语言:javascript
复制
SELECT * FROM tableName WHERE columnToCheck NOT REGEXP '[A-Za-z0-9.,-]';

可能是MySQL文档中最相关的页面。

票数 72
EN

Stack Overflow用户

发布于 2012-07-31 21:33:13

MySQL提供了全面的字符集管理,可以帮助解决此类问题。

代码语言:javascript
复制
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)

票数 276
EN

Stack Overflow用户

发布于 2009-08-09 22:58:56

可以将ASCII定义为十进制值为0- 127 (0x00 - 0x7F)的所有字符,并使用以下查询查找包含非ASCII字符的列

代码语言:javascript
复制
SELECT * FROM TABLE WHERE NOT HEX(COLUMN) REGEXP '^([0-7][0-9A-F])*$';

这是我能想到的最全面的查询。

票数 92
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/401771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档