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

如何在MySQL中找到非键盘字符?
EN

Stack Overflow用户
提问于 2012-07-31 12:00:43
回答 2查看 5.4K关注 0票数 3

How can I find non-ASCII characters in MySQL?相关的问题。

我想检查下表中是否存在非键盘字符的col1和col2。

代码语言:javascript
复制
+------------+----------+
|    col1    |    col2  |
+------------+----------+
| rewweew\s  |  4rtrt   |
| é          |  é       |
| 123/       |  h|h     |
| ëû         |  û       |
| ¼          |  ¼       |
| *&^        |  *%$     |
| #$         |  ~!`     |
+------------+----------+

我想要的结果将是

代码语言:javascript
复制
 +--------+-------+
 |   é    |   é   |
 |   ëû   |   û   |
 |   ¼    |   ¼   |
 +--------+-------+

在我的情况下,所有出现在英文键盘上的字符都允许,我只需要找出在英文键盘中没有汉字的行,比如汉字等等。

我从链接How can I find non-ASCII characters in MySQL?获得了下面提到的查询

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

但是它不起作用,因为字符~`@!#$%^&*()-+= But }]{[‘:;?/>.<,但它忽略了它们。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-31 12:49:16

这可能值得一试。

代码语言:javascript
复制
SELECT whatever
  FROM tableName 
 WHERE columnToCheck <> CONVERT(columnToCheck USING ASCII)

CONVERT(col USING charset)函数将将不可转换字符转换为替换字符。然后,转换的文本和未转换的文本将是不平等的。

当然,它是基于什么是和不是在ASCII字符曲线图,而不是什么是在一个特定的键盘。但这可能对你有好处。关于更多的讨论,请看这个。http://dev.mysql.com/doc/refman/5.0/en/charset-repertoire.html

您可以使用任意字符集名称代替ASCII。例如,如果您想在代码页1257 (立陶宛语、拉脱维亚语、爱沙尼亚语)中找出哪些字符不能正确呈现,请使用CONVERT(columnToCheck USING cp1257)

编辑您的评论提到,您还需要检测ASCII字符集中的一些字符。我认为您是在询问所谓的控制字符,它们的值从0x00到0x1f,然后是0x7f。@Joni Salonen的方法帮助我们实现了目标,但我们需要以一种多字节字符安全的方式来实现它。

代码语言:javascript
复制
 SELECT whatever
   FROM tableName
  WHERE CONVERT(columnToCheck USING ASCII) <> columnToCheck
     OR CONVERT(columnToCheck USING ASCII) RLIKE '[[.NUL.]-[.US.][.DEL.]]'

如果您查看http://www.asciitable.com/,您将看到这里的OR子句检测ASCII表的第一列中的字符,以及第四列中的最后一个字符。

票数 11
EN

Stack Overflow用户

发布于 2012-07-31 12:56:02

此查询将返回在ASCII范围0-127以外具有字符的行:

代码语言:javascript
复制
SELECT * FROM tableName WHERE NOT columnToCheck REGEXP '^[[.NUL.]-[.DEL.]]*$'

英语键盘是指美国键盘还是英国键盘?英国键盘包括一些非ASCII字符,如英镑符号.如果您也想接受这些,就必须将它们添加到正则表达式中。

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

https://stackoverflow.com/questions/11739645

复制
相关文章

相似问题

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