MySQL中文取首字母实现

本文介绍了如何在MySQL中实现中文首字母查询,包括思路、所需工具和详细步骤。通过创建两个数据库函数,firstletter用于获取单个汉字的首字母,firstconcat用于将多个汉字的首字母连接起来。在实践中,遇到的挑战包括数据库更新错误和处理特殊字符,最终通过创建临时表和联表操作解决了问题。
摘要由CSDN通过智能技术生成

目录

一、思路

二、工具

三、步骤

第一步

第二步

第三步

四、参考文章


一、思路

做项目的时候涉及到了首拼查询,思路如下:

1.将数据库中搜索名称字段转化为首拼字母连接

2.数据库查询时根据名称常规判断用or连接做第二次的首拼判断

二、工具

用到的数据库工具是MySQL workbench

三、步骤

涉及到的前两个函数可以放心大胆的直接复制粘贴,主要从函数名开始到end结束,是实现的重点,函数名可以自己替换,当然也要替换掉第二个函数中用到的第一个函数名(如果你想改个fashion的名字的话)

具体做法如下:

第一步

1.先建立转化第一个字母的数据库函数firstletter

具体用到的left(取左边第一个字符)等函数网上有解释,想了解的可以自行搜索,这儿只说实现

注:拼音首字母生成过程:
    1) 先将编码转换为GBK编码,取汉字的首个单词转为十六进制表示
    2) 将首字符的十六进制转化为十进制表示为值X
    3) 使用interval返回第一个大于 被比较元素X 的位置index,该函数的比较列表为英文字母的十六进制编码值(汉字的编码是按照英文字母排序范围的)
    4) 使用ELT函数将上一步获得的位置index,按照英文字母字符的排序位置输出汉字首字母

函数使用说明:

函数INTERVAL(N,N1,N2,N3,..........): INTERVAL()函数进行比较列表(N1,N2,N3等等)中的N值。该函数如果N<N1返回0,如果N<N2返回1,如果N<N3返回2 等等。如果N为NULL,它将返回-1。列表值必须是N1<N2<N3的形式才能正常工作。

函数ELT(N,str1,str2,str3,...) :如果N= 1ÿ

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值