MYSQL 对类似查询的回复不同

Posted

技术标签:

【中文标题】MYSQL 对类似查询的回复不同【英文标题】:MYSQL replies differently for similar queries 【发布时间】:2017-11-30 20:17:49 【问题描述】:

我正在使用 xamp 服务器:

当我运行选择查询以获取数据时

SELECT `id`, `relation`, `member_id`, `Relative_id` 
    FROM `relationship` WHERE `relation` = 'माँ'

一切正常

但是在下面的查询示例中运行时,我得到 0 个结果。

示例 1:

SELECT `id`, `relation`, `member_id`, `Relative_id` 
    FROM `relationship` WHERE `relation` = 'बेटी'

示例 2:

SELECT `id`, `relation`, `member_id`, `Relative_id` 
    FROM `relationship` WHERE `relation` = 'पिता'

关于数据库表的图像

表结构:table structure

【问题讨论】:

好像是编码问题 同意。 ***.com/a/40698282/57191 可能会有所帮助 我的意思是,您使用不同的过滤器,因为您在印地语中写的是第一个女儿,然后是母亲,然后是丈夫。那你期待什么?您正在提供不同的过滤器参数。我无法想象有人会在一个人身上成为一个女儿、母亲和丈夫,即使在印度也是如此。 'member_id' 代表一个人,而 'relative_id' 代表他不同的亲戚,而 'relation' 是成员与该特定亲戚的关系 您在数据库中使用什么字符集?您从哪里调用这些查询?当您在 phpmyadmin 中运行查询时,是否会复制此行为? 【参考方案1】:

您必须使用 Unicode 字符集(utf8_unicode_ci 可以正常工作),将字段声明为 VARCHAR 并使用 LIKE,而不是 =

SELECT `id`, `relation`, `member_id`, `Relative_id` 
FROM `relationship` WHERE `relation` LIKE 'पिता';

经过测试并且可以正常工作。

【讨论】:

将字符集更改为 'utf8_unicode_ci' 可以正常工作,即使 '=' 也可以 @AJAYRAGHUVANSHI 欢迎来到 SO。如果这篇文章中的任何答案解决了您的问题,通常将其奖励为correct answer【参考方案2】:

你需要使用UTF-8编码来比较语言。

使用mysqli_set_charset

【讨论】:

我用过 mysqli_set_charset($conn,"utf8");在我的 php 代码中但没有效果 你能分享一下你的表结构吗?

以上是关于MYSQL 对类似查询的回复不同的主要内容,如果未能解决你的问题,请参考以下文章

MySQL-性能优化

Mysql - 正确排序 Facebook 帖子、评论和回复

mysql中如何查询中文字段

MySQL-查询数据库

MySQL-查询数据库

MySQL-查询数据库