You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL如何使用SOUNDEX实现忽略首字母的内容搜索?

问题原因

MySQL 原生 SOUNDEX 算法的编码规则是:返回的 4 位编码第一位固定为输入字符串的首字母,后续三位为发音特征编码。
你的场景中两个字符串的编码结果分别为:

  • SOUNDEX('Hammer') → H560
  • SOUNDEX('ammer') → A560
    你现有语句是将 ammer 去掉末尾 0 的编码 A56 作为前缀匹配,Hammer 的编码首字母为 H,自然无法匹配 A 开头的前缀,因此没有返回结果。

修正方案

要实现忽略首字母的发音匹配,只需要同时去掉存储字段和搜索词的 SOUNDEX 编码首字母,再做前缀匹配即可,修正后的查询如下:

SELECT * FROM product 
WHERE SUBSTRING(SOUNDEX(item_name), 2) 
LIKE CONCAT(TRIM(TRAILING '0' FROM SUBSTRING(SOUNDEX('ammer'), 2)), '%')

效果验证

上述语句中:

  • SUBSTRING(SOUNDEX(item_name), 2) 会把所有商品名称的 SOUNDEX 编码首字母丢弃,只保留发音特征部分,Hammer 处理后得到 560
  • 搜索词 ammer 处理后得到的发音特征部分为 56,用 56% 做前缀匹配刚好可以命中 560,最终返回 id 为 1 的 Hammer 记录,符合预期结果。

内容的提问来源于stack exchange,提问作者Bryan Caliwag

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 18:36:04