mysql 查询包含指定拼音的词

表 = biao
词字段 = ci 如 和风
拼音字段 = py 如 hé fēng

查询表中 ci 包含 '和' and py 包含 'hé'

以下为二次编辑

“和”字共有5个读音:【hé】【hè】【huò】【huó】【hú】

查询条件 ci like '%和%' and py like '%$py[$i]%'
$py[i] 是循环调出的多个拼音

查询条件py like '%$py[i]%'
查询输出:
hé 下包含了
hú 下包含了 hùn hé

问题已解决,以下供参考

1、包含查询
较like更准确的:FIND_IN_SET("str", str_list) ;
使用FIND_IN_SET时,数据存储应以 , 分割

2、mysql 不区分声调 'e' 'é'
针对声调,设置排序方式COLLATE=utf8_bin;即可区分

阅读 4.1k
2 个回答

不知道您是不是这个意思
select * from biao where ci like '%和%' and py like '%hé%'

你需要指定 collation。

collation 是用于字符串比较的规则,用于比较不同的字符,以及确定某些字符时候被认为是“同一个”。

默认的 collation 一般是不区分大小写的。于是“ABC”与“abc”会被认为是相等的。它同时也不去部分 accent ,也就是拼音里的声调符号。于是,不同声调的字母也会被认为是相等的。

你需要为你表所在的列设定一个合适的 collation 。

需要严格区分的时候我会用 XXX_bin ,XXX 的部分会根据字符集的不同而不同。

mysql 文档有一章讲字符集与 collation 。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题