如何在 MySql 中进行重音敏感搜索

How to conduct an Accent Sensitive search in MySql(如何在 MySql 中进行重音敏感搜索)
本文介绍了如何在 MySql 中进行重音敏感搜索的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我有一个带有 utf8 通用 ci 排序规则的 MySQL 表.在表格中,我可以看到两个条目:

I have a MySQL table with utf8 general ci collation. In the table, I can see two entries:

糟糕
废话

我使用的查询如下所示:

I am using a query that looks like this:

SELECT *  FROM `words` WHERE `word` = 'abád'

查询结果给出了两个词:

The query result gives both words:

糟糕
废话

有没有办法表明我只希望 MySQL 找到带重音的单词?我希望查询只返回

Is there a way to indicate that I only want MySQL to find the accented word? I want the query to only return

废话

我也试过这个查询:

SELECT *  FROM `words` WHERE BINARY `word` = 'abád'

它没有给我任何结果.谢谢你的帮助.

It gives me no results. Thank you for the help.

推荐答案

如果您对该字段的搜索总是对重音敏感,则将该字段的排序规则声明为 utf8_bin(这将比较 utf8-encoded 字节)或使用特定于语言的排序规则来区分重音字符和非重音字符.

If your searches on that field are always going to be accent-sensitive, then declare the collation of the field as utf8_bin (that'll compare for equality the utf8-encoded bytes) or use a language specific collation that distinguish between the accented and un-accented characters.

col_name varchar(10) collate utf8_bin

如果搜索通常不区分重音,但您想为此搜索设置例外,请尝试;

If searches are normally accent-insensitive, but you want to make an exception for this search, try;

WHERE col_name = 'abád' collate utf8_bin

这篇关于如何在 MySql 中进行重音敏感搜索的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

Simulating MySQL#39;s ORDER BY FIELD() in Postgresql(在 Postgresql 中模拟 MySQL 的 ORDER BY FIELD())
Using MySQL query to traverse rows to make a recursive tree(使用MySQL查询遍历行制作递归树)
MySQL LOAD DATA INFILE with ON DUPLICATE KEY UPDATE(MySQL LOAD DATA INFILE 和 ON DUPLICATE KEY UPDATE)
Search for quot;whole word matchquot; in MySQL(搜索“全字匹配在 MySQL 中)
add column to mysql table if it does not exist(如果不存在,则将列添加到 mysql 表)
MIN/MAX vs ORDER BY and LIMIT(MIN/MAX 与 ORDER BY 和 LIMIT)