mysql 根据英文首字母来查询汉字函数

方法一:建一个拼音表 t_cosler ,存放每个字母开头的第一个汉字的编号和最后一个汉字的编号。

BatchFile code

+------+--------+-------+

| f_PY | cBegin | cEnd  |

+------+--------+-------+

| A    |  45217 | 45252 |

| B    |  45253 | 45760 |

.....

| Z    |  54481 | 55289 |

+------+--------+-------+

 



然后直接查询就行了。

SQL code

mysql> create table t_cosler(

    ->  f_PY char primary key,

    ->  cBegin  SMALLINT UNSIGNED not null,

    ->  cEnd    SMALLINT UNSIGNED not null

    -> );

Query OK, 0 rows affected (0.09 sec)

 

mysql> insert into t_cosler values

    -> ('A',0xB0A1,0xB0C4),

    -> ('B',0xB0C5,0xB2C0),

    -> ('C',0xB2C1,0xB4ED),

    -> ('D',0xB4EE,0xB6E9),

    -> ('E',0xB6EA,0xB7A1),

    -> ('F',0xB7A2,0xB8C0),

    -> ('G',0xB8C1,0xB9FD),

    -> ('H',0xB9FE,0xBBF6),

    -> ('J',0xBBF7,0xBFA5),

    -> ('K',0xBFA6,0xC0AB),

    -> ('L',0xC0AC,0xC2E7),

    -> ('M',0xC2E8,0xC4C2),

    -> ('N',0xC4C3,0xC5B5),

    -> ('O',0xC5B6,0xC5BD),

    -> ('P',0xC5BE,0xC6D9),

    -> ('Q',0xC6DA,0xC8BA),

    -> ('R',0xC8BB,0xC8F5),

     -> ('S',0xC8F6,0xCBF9),

    -> ('T',0xCBFA,0xCDD9),

    -> ('W',0xCDDA,0xCEF3),

    -> ('X',0xCEF4,0xD188),

    -> ('Y',0xD1B9,0xD4D0),

    -> ('Z',0xD4D1,0xD7F9);

Query OK, 23 rows affected (0.16 sec)

Records: 23  Duplicates: 0  Warnings: 0

 

mysql> select * from  o_personnel;

+------+------------+

| A_Id | A_UserName |

+------+------------+

|    1 | 首先       |

|    2 | 检查       |

|    3 | 我们       |

|    4 | 的二       |

|    5 | 进制       |

|    6 | 是否       |

|    7 | 适合       |

|    8 | 你的       |

|    9 | 平台       |

+------+------------+

9 rows in set (0.00 sec)

 

mysql> select p.*,c.*

    -> from o_personnel p , t_cosler c

    -> where  CONV(HEX(left(A_UserName,1)),16,10) between c.cBegin and c.cEnd;

+------+------------+------+--------+-------+

| A_Id | A_UserName | f_PY | cBegin | cEnd  |

+------+------------+------+--------+-------+

|    4 | 的二       | D    |  46318 | 46825 |

|    2 | 检查       | J    |  48119 | 49061 |

|    5 | 进制       | J    |  48119 | 49061 |

|    8 | 你的       | N    |  50371 | 50613 |

|    9 | 平台       | P    |  50622 | 50905 |

|    1 | 首先       | S    |  51446 | 52217 |

|    6 | 是否       | S    |  51446 | 52217 |

|    7 | 适合       | S    |  51446 | 52217 |

|    3 | 我们       | W    |  52698 | 52979 |

+------+------------+------+--------+-------+

9 rows in set (0.00 sec)

 

mysql>



查S开头的

SQL code

mysql> select p.*

    -> from o_personnel p , t_cosler c

    -> where  CONV(HEX(left(A_UserName,1)),16,10) between c.cBegin and c.cEnd

    -> and c.f_PY='S';

+------+------------+

| A_Id | A_UserName |

+------+------------+

|    1 | 首先       |

|    6 | 是否       |

|    7 | 适合       |

+------+------------+

3 rows in set (0.00 sec)

 

mysql>



方法二:不用这个t_cosler 表,直接写个函数权限汉字得到拼音。

局限性: 以上方法,均依照汉字区位表来实现,对区位后面的复杂字,无法准确判断,对多音字无法准确判断。

方法三:从微软拼音中导出所有汉字的拼音表。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值