为什么这个MySQL双元电话功能不能正常工作?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了为什么这个MySQL双元电话功能不能正常工作?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1293字,纯文字阅读大概需要2分钟。
内容图文
![为什么这个MySQL双元电话功能不能正常工作?](/upload/InfoBanner/zyjiaocheng/898/bed27281f0a44c29817b4353ed087606.jpg)
我刚刚学习了Metaphone和Double Metaphone搜索算法,我有几个问题.根据Metaphone Wiki页面,我发现了几个带有实现的源,特别是MySQL实现.我想用我的测试数据库测试一下,所以我先导入了metaphone.sql文件(包含双元电话功能),发现here
现在,我有一个表格,国家/地区,其中包含“名称”列中所有国家/地区的列表,例如’阿富汗’,’阿尔巴尼亚’,’阿尔及利亚’等等.首先,我想在表格中创建一个新专栏来存储每个国家的双重Metaphone字符串.我运行了以下代码:
UPDATE country SET NameDM = dm(name)
一切正常.阿富汗的互联网字符串是’AFKNSTN’,阿尔巴尼亚是’ALPN’,阿尔及利亚是’ALKR; ALJR’等等.“真棒,”我想.
但是,当我试图查询表时,我没有得到任何结果.根据metaphone.sql的作者,我坚持以下SQL语句的语法:
SELECT Name FROM tblPeople WHERE dm(Name) = dm(@search)
所以,我将此代码更改为以下内容:
SELECT * FROM country WHERE dm(name) = dm(@search)
当然,我将“@search”更改为我正在寻找的任何搜索词,但在每次SQL查询后我得到0个结果.
有谁能解释这个问题?我错过了一些重要的东西,还是我只是误解了Metaphone算法?
谢谢!
解决方法:
仔细查看排序/字符集/编码(可以定义到列级别).排序规则定义了字符串的比较方式,但字符集可能意味着使用某种排序规则.也许你的文字字符串有不同的字符集,导致字符串比较失败.
即使这可能是揭示
select name, length(name), char_length(name), @search, length(@search), char_length(@search) from tbl
.
show variables like 'character%'
.
show create table tbl
内容总结
以上是互联网集市为您收集整理的为什么这个MySQL双元电话功能不能正常工作?全部内容,希望文章能够帮你解决为什么这个MySQL双元电话功能不能正常工作?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。