美文网首页
mysql拼音搜索数据库实现

mysql拼音搜索数据库实现

作者: 向日葵1884 | 来源:发表于2019-09-27 16:15 被阅读0次

    1、创建表:

    CREATE TABLE
    IF NOT EXISTS `t_base_pinyin` (
        `pin_yin_` VARCHAR (255) CHARACTER
        SET gbk NOT NULL,
        `code_` INT (11) NOT NULL,
        PRIMARY KEY (`code_`)
    ) ENGINE = INNODB DEFAULT CHARSET = latin1;
    

    2、插入数据:

    INSERT INTO t_base_pinyin (pin_yin_, code_)
    VALUES
        ("a", 20319),
        ("ai", 20317),
        ("an", 20304),
        ("ang", 20295),
        ("ao", 20292),
        ("ba", 20283),
        ("bai", 20265),
        ("ban", 20257),
        ("bang", 20242),
        ("bao", 20230),
        ("bei", 20051),
        ("ben", 20036),
        ("beng", 20032),
        ("bi", 20026),
        ("bian", 20002),
        ("biao", 19990),
        ("bie", 19986),
        ("bin", 19982),
        ("bing", 19976),
        ("bo", 19805),
        ("bu", 19784),
        ("ca", 19775),
        ("cai", 19774),
        ("can", 19763),
        ("cang", 19756),
        ("cao", 19751),
        ("ce", 19746),
        ("ceng", 19741),
        ("cha", 19739),
        ("chai", 19728),
        ("chan", 19725),
        ("chang", 19715),
        ("chao", 19540),
        ("che", 19531),
        ("chen", 19525),
        ("cheng", 19515),
        ("chi", 19500),
        ("chong", 19484),
        ("chou", 19479),
        ("chu", 19467),
        ("chuai", 19289),
        ("chuan", 19288),
        ("chuang", 19281),
        ("chui", 19275),
        ("chun", 19270),
        ("chuo", 19263),
        ("ci", 19261),
        ("cong", 19249),
        ("cou", 19243),
        ("cu", 19242),
        ("cuan", 19238),
        ("cui", 19235),
        ("cun", 19227),
        ("cuo", 19224),
        ("da", 19218),
        ("dai", 19212),
        ("dan", 19038),
        ("dang", 19023),
        ("dao", 19018),
        ("de", 19006),
        ("deng", 19003),
        ("di", 18996),
        ("dian", 18977),
        ("diao", 18961),
        ("die", 18952),
        ("ding", 18783),
        ("diu", 18774),
        ("dong", 18773),
        ("dou", 18763),
        ("du", 18756),
        ("duan", 18741),
        ("dui", 18735),
        ("dun", 18731),
        ("duo", 18722),
        ("e", 18710),
        ("en", 18697),
        ("er", 18696),
        ("fa", 18526),
        ("fan", 18518),
        ("fang", 18501),
        ("fei", 18490),
        ("fen", 18478),
        ("feng", 18463),
        ("fo", 18448),
        ("fou", 18447),
        ("fu", 18446),
        ("ga", 18239),
        ("gai", 18237),
        ("gan", 18231),
        ("gang", 18220),
        ("gao", 18211),
        ("ge", 18201),
        ("gei", 18184),
        ("gen", 18183),
        ("geng", 18181),
        ("gong", 18012),
        ("gou", 17997),
        ("gu", 17988),
        ("gua", 17970),
        ("guai", 17964),
        ("guan", 17961),
        ("guang", 17950),
        ("gui", 17947),
        ("gun", 17931),
        ("guo", 17928),
        ("ha", 17922),
        ("hai", 17759),
        ("han", 17752),
        ("hang", 17733),
        ("hao", 17730),
        ("he", 17721),
        ("hei", 17703),
        ("hen", 17701),
        ("heng", 17697),
        ("hong", 17692),
        ("hou", 17683),
        ("hu", 17676),
        ("hua", 17496),
        ("huai", 17487),
        ("huan", 17482),
        ("huang", 17468),
        ("hui", 17454),
        ("hun", 17433),
        ("huo", 17427),
        ("ji", 17417),
        ("jia", 17202),
        ("jian", 17185),
        ("jiang", 16983),
        ("jiao", 16970),
        ("jie", 16942),
        ("jin", 16915),
        ("jing", 16733),
        ("jiong", 16708),
        ("jiu", 16706),
        ("ju", 16689),
        ("juan", 16664),
        ("jue", 16657),
        ("jun", 16647),
        ("ka", 16474),
        ("kai", 16470),
        ("kan", 16465),
        ("kang", 16459),
        ("kao", 16452),
        ("ke", 16448),
        ("ken", 16433),
        ("keng", 16429),
        ("kong", 16427),
        ("kou", 16423),
        ("ku", 16419),
        ("kua", 16412),
        ("kuai", 16407),
        ("kuan", 16403),
        ("kuang", 16401),
        ("kui", 16393),
        ("kun", 16220),
        ("kuo", 16216),
        ("la", 16212),
        ("lai", 16205),
        ("lan", 16202),
        ("lang", 16187),
        ("lao", 16180),
        ("le", 16171),
        ("lei", 16169),
        ("leng", 16158),
        ("li", 16155),
        ("lia", 15959),
        ("lian", 15958),
        ("liang", 15944),
        ("liao", 15933),
        ("lie", 15920),
        ("lin", 15915),
        ("ling", 15903),
        ("liu", 15889),
        ("long", 15878),
        ("lou", 15707),
        ("lu", 15701),
        ("lv", 15681),
        ("luan", 15667),
        ("lue", 15661),
        ("lun", 15659),
        ("luo", 15652),
        ("ma", 15640),
        ("mai", 15631),
        ("man", 15625),
        ("mang", 15454),
        ("mao", 15448),
        ("me", 15436),
        ("mei", 15435),
        ("men", 15419),
        ("meng", 15416),
        ("mi", 15408),
        ("mian", 15394),
        ("miao", 15385),
        ("mie", 15377),
        ("min", 15375),
        ("ming", 15369),
        ("miu", 15363),
        ("mo", 15362),
        ("mou", 15183),
        ("mu", 15180),
        ("na", 15165),
        ("nai", 15158),
        ("nan", 15153),
        ("nang", 15150),
        ("nao", 15149),
        ("ne", 15144),
        ("nei", 15143),
        ("nen", 15141),
        ("neng", 15140),
        ("ni", 15139),
        ("nian", 15128),
        ("niang", 15121),
        ("niao", 15119),
        ("nie", 15117),
        ("nin", 15110),
        ("ning", 15109),
        ("niu", 14941),
        ("nong", 14937),
        ("nu", 14933),
        ("nv", 14930),
        ("nuan", 14929),
        ("nue", 14928),
        ("nuo", 14926),
        ("o", 14922),
        ("ou", 14921),
        ("pa", 14914),
        ("pai", 14908),
        ("pan", 14902),
        ("pang", 14894),
        ("pao", 14889),
        ("pei", 14882),
        ("pen", 14873),
        ("peng", 14871),
        ("pi", 14857),
        ("pian", 14678),
        ("piao", 14674),
        ("pie", 14670),
        ("pin", 14668),
        ("ping", 14663),
        ("po", 14654),
        ("pu", 14645),
        ("qi", 14630),
        ("qia", 14594),
        ("qian", 14429),
        ("qiang", 14407),
        ("qiao", 14399),
        ("qie", 14384),
        ("qin", 14379),
        ("qing", 14368),
        ("qiong", 14355),
        ("qiu", 14353),
        ("qu", 14345),
        ("quan", 14170),
        ("que", 14159),
        ("qun", 14151),
        ("ran", 14149),
        ("rang", 14145),
        ("rao", 14140),
        ("re", 14137),
        ("ren", 14135),
        ("reng", 14125),
        ("ri", 14123),
        ("rong", 14122),
        ("rou", 14112),
        ("ru", 14109),
        ("ruan", 14099),
        ("rui", 14097),
        ("run", 14094),
        ("ruo", 14092),
        ("sa", 14090),
        ("sai", 14087),
        ("san", 14083),
        ("sang", 13917),
        ("sao", 13914),
        ("se", 13910),
        ("sen", 13907),
        ("seng", 13906),
        ("sha", 13905),
        ("shai", 13896),
        ("shan", 13894),
        ("shang", 13878),
        ("shao", 13870),
        ("she", 13859),
        ("shen", 13847),
        ("sheng", 13831),
        ("shi", 13658),
        ("shou", 13611),
        ("shu", 13601),
        ("shua", 13406),
        ("shuai", 13404),
        ("shuan", 13400),
        ("shuang", 13398),
        ("shui", 13395),
        ("shun", 13391),
        ("shuo", 13387),
        ("si", 13383),
        ("song", 13367),
        ("sou", 13359),
        ("su", 13356),
        ("suan", 13343),
        ("sui", 13340),
        ("sun", 13329),
        ("suo", 13326),
        ("ta", 13318),
        ("tai", 13147),
        ("tan", 13138),
        ("tang", 13120),
        ("tao", 13107),
        ("te", 13096),
        ("teng", 13095),
        ("ti", 13091),
        ("tian", 13076),
        ("tiao", 13068),
        ("tie", 13063),
        ("ting", 13060),
        ("tong", 12888),
        ("tou", 12875),
        ("tu", 12871),
        ("tuan", 12860),
        ("tui", 12858),
        ("tun", 12852),
        ("tuo", 12849),
        ("wa", 12838),
        ("wai", 12831),
        ("wan", 12829),
        ("wang", 12812),
        ("wei", 12802),
        ("wen", 12607),
        ("weng", 12597),
        ("wo", 12594),
        ("wu", 12585),
        ("xi", 12556),
        ("xia", 12359),
        ("xian", 12346),
        ("xiang", 12320),
        ("xiao", 12300),
        ("xie", 12120),
        ("xin", 12099),
        ("xing", 12089),
        ("xiong", 12074),
        ("xiu", 12067),
        ("xu", 12058),
        ("xuan", 12039),
        ("xue", 11867),
        ("xun", 11861),
        ("ya", 11847),
        ("yan", 11831),
        ("yang", 11798),
        ("yao", 11781),
        ("ye", 11604),
        ("yi", 11589),
        ("yin", 11536),
        ("ying", 11358),
        ("yo", 11340),
        ("yong", 11339),
        ("you", 11324),
        ("yu", 11303),
        ("yuan", 11097),
        ("yue", 11077),
        ("yun", 11067),
        ("za", 11055),
        ("zai", 11052),
        ("zan", 11045),
        ("zang", 11041),
        ("zao", 11038),
        ("ze", 11024),
        ("zei", 11020),
        ("zen", 11019),
        ("zeng", 11018),
        ("zha", 11014),
        ("zhai", 10838),
        ("zhan", 10832),
        ("zhang", 10815),
        ("zhao", 10800),
        ("zhe", 10790),
        ("zhen", 10780),
        ("zheng", 10764),
        ("zhi", 10587),
        ("zhong", 10544),
        ("zhou", 10533),
        ("zhu", 10519),
        ("zhua", 10331),
        ("zhuai", 10329),
        ("zhuan", 10328),
        ("zhuang", 10322),
        ("zhui", 10315),
        ("zhun", 10309),
        ("zhuo", 10307),
        ("zi", 10296),
        ("zong", 10281),
        ("zou", 10274),
        ("zu", 10270),
        ("zuan", 10262),
        ("zui", 10260),
        ("zun", 10256),
        ("zuo", 10254);
    

    3、创建函数:

    DROP FUNCTION IF EXISTS to_pinyin;
    DELIMITER $
    CREATE FUNCTION to_pinyin(NAME VARCHAR(255) CHARSET gbk)
    RETURNS VARCHAR(255) CHARSET gbk
    BEGIN
        DECLARE mycode INT;
        DECLARE tmp_lcode VARCHAR(2) CHARSET gbk;
        DECLARE lcode INT;
        DECLARE tmp_rcode VARCHAR(2) CHARSET gbk;
        DECLARE rcode INT;
        DECLARE mypy VARCHAR(255) CHARSET gbk DEFAULT '';
        DECLARE lp INT;
        SET mycode = 0;
        SET lp = 1;
        SET NAME = HEX(NAME);
        WHILE lp < LENGTH(NAME) DO
            SET tmp_lcode = SUBSTRING(NAME, lp, 2);
            SET lcode = CAST(ASCII(UNHEX(tmp_lcode)) AS UNSIGNED); 
            SET tmp_rcode = SUBSTRING(NAME, lp + 2, 2);
            SET rcode = CAST(ASCII(UNHEX(tmp_rcode)) AS UNSIGNED); 
            IF lcode > 128 THEN
                SET mycode =65536 - lcode * 256 - rcode ;
                SELECT CONCAT(mypy,pin_yin_) INTO mypy FROM t_base_pinyin WHERE CODE_ >= ABS(mycode) ORDER BY CODE_ ASC LIMIT 1;
                SET lp = lp + 4;
            ELSE
                SET mypy = CONCAT(mypy,CHAR(CAST(ASCII(UNHEX(SUBSTRING(NAME, lp, 2))) AS UNSIGNED)));
                SET lp = lp + 2;
            END IF;
        END WHILE;
        RETURN LOWER(mypy);
    END;
    $
    DELIMITER ;
    

    4、创建视图:

    CREATE VIEW v_pinyin AS SELECT
        u.id,
        to_pinyin (u.displayname) AS pinyin,
        u.displayName
    FROM
        userinfo u
    

    相关文章

      网友评论

          本文标题:mysql拼音搜索数据库实现

          本文链接:https://www.haomeiwen.com/subject/fjusyctx.html