PHP首字母搜索功能,附上汉语拼音字母ASCII范围

本文主题:汉语拼音字母ASCII范围,实现首字母搜索功能

背景:风风火火,两天将整个名片系统所有接口写完后
公司更改了需求,要求名片搜索不但有搜索姓名手机号职位功能还要加上姓名首字母搜索功能
思来想去,这个难度有点大啊,就想到能不能用ASCII码来实现,发现PHP中有个ord()函数可以返回ASCII码值,转念一想,要是mysql中也有ord()函数这样的功能函数的话,那就很nice了,试了一下还真有,连名字都一样,真的很nice。废话不多说,下面开始我的分享:

  • 数据库代码

所用到表:user_cards(用户表),initial_search(字母范围搜索表)

CREATE TABLE IF NOT EXISTS `initial_search` (
  `inputLe` char(1) NOT NULL COMMENT '需转码的字母',
  `transcodeBegin` int(11) NOT NULL COMMENT '转码范围开始',
  `transcodeEnd` int(11) NOT NULL COMMENT '转码范围结束'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  • 搜索代码:
SELECT uc. * , inits. *
                FROM user_cards uc, initial_search inits
                WHERE CONV( HEX( LEFT( CONVERT( userName
                USING gbk ) , 1 ) ) , 16, 10 )
                BETWEEN inits.transcodeBegin
                AND inits.transcodeEnd
                AND inputLe = '$key' "
  • 下面来看具体原理:利用ASCII码值和16进制与10进制的转换实现
  • 一下即是汉语拼音字母ASCII范围也是搜索表的值
INSERT INTO `initial_search` (`inputLe`, `transcodeBegin`, `transcodeEnd`) VALUES
('A', 45217, 45252),
('B', 45253, 45760),
('C', 45761, 46317),
('D', 46318, 46825),
('E', 46826, 47009),
('F', 47010, 47296),
('G', 47297, 47613),
('H', 47614, 48118),
('J', 48119, 49061),
('K', 49062, 49323),
('L', 49324, 49895),
('M', 49896, 50370),
('N', 50371, 50613),
('O', 50614, 50621),
('P', 50622, 50905),
('Q', 50906, 51386),
('R', 51387, 51445),
('S', 51446, 52217),
('T', 52218, 52697),
('W', 52698, 52979),
('X', 52980, 53640),
('Y', 53689, 54480),
('Z', 54481, 55289);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • PHP常用函数大全 usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解...
    上街买菜丶迷倒老太阅读 5,185评论 0 20
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,446评论 0 4
  • php usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解包。 uni...
    思梦PHP阅读 6,109评论 1 24
  • 我曾与这个世界交谈 关于忙碌的人群和逝去的生命 而它用沉入泥土的落叶回答我 请认识自己 我曾与这个世界交谈 关于复...
    力挺蘑叔阅读 1,800评论 0 2
  • 功能需求: 1、管理集团公司的所有开发者,并进行实名认证 2、开发者社区能够快速发布项目主页 能够插入图片、视频类...
    李哲_332b阅读 1,807评论 0 0