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 对类似查询的回复不同的主要内容,如果未能解决你的问题,请参考以下文章