PHP首字母搜索功能,附上漢語(yǔ)拼音字母ASCII范圍

本文主題:漢語(yǔ)拼音字母ASCII范圍,實(shí)現(xiàn)首字母搜索功能

背景:風(fēng)風(fēng)火火,兩天將整個(gè)名片系統(tǒng)所有接口寫(xiě)完后
公司更改了需求,要求名片搜索不但有搜索姓名手機(jī)號(hào)職位功能還要加上姓名首字母搜索功能
思來(lái)想去,這個(gè)難度有點(diǎn)大啊,就想到能不能用ASCII碼來(lái)實(shí)現(xiàn),發(fā)現(xiàn)PHP中有個(gè)ord()函數(shù)可以返回ASCII碼值,轉(zhuǎn)念一想,要是mysql中也有ord()函數(shù)這樣的功能函數(shù)的話,那就很nice了,試了一下還真有,連名字都一樣,真的很nice。廢話不多說(shuō),下面開(kāi)始我的分享:

  • 數(shù)據(jù)庫(kù)代碼

所用到表:user_cards(用戶表),initial_search(字母范圍搜索表)

CREATE TABLE IF NOT EXISTS `initial_search` (
  `inputLe` char(1) NOT NULL COMMENT '需轉(zhuǎn)碼的字母',
  `transcodeBegin` int(11) NOT NULL COMMENT '轉(zhuǎn)碼范圍開(kāi)始',
  `transcodeEnd` int(11) NOT NULL COMMENT '轉(zhuǎn)碼范圍結(jié)束'
) 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' "
  • 下面來(lái)看具體原理:利用ASCII碼值和16進(jìn)制與10進(jìn)制的轉(zhuǎn)換實(shí)現(xiàn)
  • 一下即是漢語(yǔ)拼音字母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);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • PHP常用函數(shù)大全 usleep() 函數(shù)延遲代碼執(zhí)行若干微秒。 unpack() 函數(shù)從二進(jìn)制字符串對(duì)數(shù)據(jù)進(jìn)行解...
    上街買菜丶迷倒老太閱讀 1,495評(píng)論 0 20
  • 第5章 引用類型(返回首頁(yè)) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,677評(píng)論 0 4
  • php usleep() 函數(shù)延遲代碼執(zhí)行若干微秒。 unpack() 函數(shù)從二進(jìn)制字符串對(duì)數(shù)據(jù)進(jìn)行解包。 uni...
    思?jí)鬚HP閱讀 2,134評(píng)論 1 24
  • 我曾與這個(gè)世界交談 關(guān)于忙碌的人群和逝去的生命 而它用沉入泥土的落葉回答我 請(qǐng)認(rèn)識(shí)自己 我曾與這個(gè)世界交談 關(guān)于復(fù)...
    力挺蘑叔閱讀 297評(píng)論 0 2
  • 功能需求: 1、管理集團(tuán)公司的所有開(kāi)發(fā)者,并進(jìn)行實(shí)名認(rèn)證 2、開(kāi)發(fā)者社區(qū)能夠快速發(fā)布項(xiàng)目主頁(yè) 能夠插入圖片、視頻類...
    李哲_332b閱讀 300評(píng)論 0 0

友情鏈接更多精彩內(nèi)容