【发布时间】:2013-08-30 11:50:33
【问题描述】:
问题是:我已经从mochimedia导入了大约20000个游戏描述到我的数据库中,但是有很多外国游戏,我不想列出。
我想出了这个查询来查找包含非 ASCII 字符的列
SELECT * FROM TABLE WHERE NOT HEX(COLUMN) REGEXP '^([0-7][0-9A-F])*$';
请注意,我在 stackoverflow 上找到了这个解决方案,因为我不是 mysql 查询方面的专家。
然而,虽然这个查询捕获了一些外国描述,但有时它似乎也会失败并找到完美的描述,所以我正在寻找的是微调这个查询以跳过“好的”那些。
以下是一些“正常”的返回行,这意味着它们不应该被返回:
使用 Game Boy 限制的 Game Boy Jam 游戏。这是一个西方 平台游戏,您可以在其中扮演镇上的治安官。你的使命 就是把这片土地上的坏土匪都抓起来,带到 正义。
还有一个
如果你有这么笨拙的主人,你就很难成为一只小猫!昨天 她在公园里丢了很多东西,现在由你来寻找 他们!
那天的回忆会很有帮助——你应该记住 你最后看到那个东西并在那里搜索。地图也可以用于 你的任务。最后你可以爬上一棵树,向一只大猫要一个 提示 - 您将再次看到当天的所有事件。
但有时仅仅找到丢失的东西是不够的。一些 公园的居民可能已经在自己使用它了——不管是 老鼠或蚂蚁。在这种情况下,您可能需要带一些东西进去 交换丢失的东西——只有这样你才能把它找回来。
最后一个例子
饥饿的蜜蜂是一款独特的有趣游戏。它包括一个乐趣 平台游戏,益智游戏,冒险游戏,角色扮演游戏。在这个 奇幻游戏,需要制作蜜蜂来收集所有的花 为了赢得比赛。随着水平的进步,新的挑战将是 引入了逐渐的韧性。总的来说,它完全融合了 有趣,这使得一个人坚持玩游戏几个小时。 GOI:我们的评分 4.5 5
请记住,我不是mysql专家,所以我只能猜测是什么问题,我的猜测是有些字符像
' in It's or the characters – and :
可能会导致这种情况。
也许有人愿意分享一个优化的查询来解决这个问题?我在这方面花了一些时间,但考虑到我仍然是 php 的新手,绝对不是 REGEXP 和 mysql 查询的专家,如果能在这里得到一些帮助,我可以提高我的知识。请不要以为只要你把它扔给我,我就会明白你说的任何东西,所以详细的帮助会很棒。
感谢您抽出宝贵时间阅读本文。
【问题讨论】:
-
他们不一定是“外国人”,这本身就是一个观点问题。对于某些人来说,“ç”或“ß”根本不是外来语。你的意思是“非ASCII”。甚至“ö”有时也用在英语中。
-
感谢您的评论。我更改了标题以减少混乱。
-
是的,一个名副其实的可能性 smörgåsbord ;-)
-
这个正则表达式只接受 ASCII:
^(\x20-\xff])*$- 请注意像ö和ß这样的东西是有效的 ASCII 值。如果您想忽略扩展的 ASCII 值,您的正则表达式将如下所示:^(\x20-\x7e)*$但请注意,它将省略破折号和引号之类的内容... -
问题显然出在编码上。当您尝试运行此查询时 -
select hex("It’s")它返回4974E2809973%E2 %80 %99 是 '.它是从第一个失败描述示例中复制而来的。