【问题标题】:Search for accentuated char in mysql在mysql中搜索重音字符
【发布时间】:2010-11-25 17:39:28
【问题描述】:

我需要在 mysql 表中查找 é ou è 的出现次数。

第一次尝试: 选择“LéL”,如“%é%”; 这不起作用:它返回包含 e 或 é 或 è 的单词。

我也尝试了没有结果的正则表达式(使用字母 L):

SELECT "Lbc" REGEXP ".*L.*";  -- works : it finds L in the string LBC

SELECT "Lbc" REGEXP ".*\u4C.*"; -- doesn't work : can't find the hexadecimal equivalent of L in the string LBC.

我想测试 \u 加十六进制搜索...我还尝试了文档中提到的双重转义而不做任何更改。

正则表达式搜索在 mysql 中似乎非常有限。在http://dev.mysql.com/doc/refman/4.1/en/regexp.html 上找不到任何与\u 相关的文档。

我使用的是 mysql 4.1。

如果mysql 5中有4中没有的解决方案,我很想知道。

【问题讨论】:

  • 为什么不能只发送实际字符而不是十六进制代码?
  • 好吧,我会被诅咒的...这是我尝试的第一件事...但是现在我在阅读您的评论后再次尝试...它有效。
  • 把评论变成答案,让我们完成它。
  • 哦等等。我知道为什么:我第一次尝试 LIKE "%é%" 并且 (!!!) 不起作用。它返回正常的 e 以及 é 或 è。但正则表达式版本的工作原因不明。
  • 这个问题还是值得问的……我学到了一些关于 SQL 的知识。我了解到我不喜欢“like”关键字。

标签: mysql search diacritics


【解决方案1】:
SELECT 'LéL' LIKE '%é%' COLLATE utf8_bin;
/* latin1_bin if your data is in latin1, etc. */
1

SELECT 'LéL' LIKE '%e%' COLLATE utf8_bin;
0

http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html#operator_likehttp://dev.mysql.com/doc/refman/5.0/en/charset-binary-collations.html

在 MySQL 5.1 中测试 - 也应该在 4.1 中工作。

【讨论】:

  • +1 的答案很好,但 Longneck 有更简单的解决方案。 (等待他发表评论作为答案)
猜你喜欢
  • 2012-04-18
  • 2013-05-16
  • 2017-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-05
相关资源
最近更新 更多