Nothing 2007-12-11 15:40
MYSQL 中取拼音首字母的函数
今天碰到了取拼音首字母的需求。整理了一下。
1、编码表:
/*DDL Information For - test.cs_char2letter*/
------------------------------------------------------
Table Create Table
-------------- ---------------------------------------------
cs_char2letter CREATE TABLE `cs_char2letter` (
`PY` char(1) character set utf8 NOT NULL,
`HZ` char(1) NOT NULL default '',
PRIMARY KEY (`PY`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk
2、记录信息:
query result(23 records)[table][tr][td]PY[/td][td]HZ[/td][/tr][tr][td]A[/td][td]骜[/td][/tr][tr][td]B[/td][td]簿[/td][/tr][tr][td]C[/td][td]错[/td][/tr][tr][td]D[/td][td]鵽[/td][/tr][tr][td]E[/td][td]樲[/td][/tr][tr][td]F[/td][td]鳆[/td][/tr][tr][td]G[/td][td]腂[/td][/tr][tr][td]H[/td][td]夻[/td][/tr][tr][td]J[/td][td]攈[/td][/tr][tr][td]K[/td][td]穒[/td][/tr][tr][td]L[/td][td]鱳[/td][/tr][tr][td]M[/td][td]旀[/td][/tr][tr][td]N[/td][td]桛[/td][/tr][tr][td]O[/td][td]沤[/td][/tr][tr][td]P[/td][td]曝[/td][/tr][tr][td]Q[/td][td]囕[/td][/tr][tr][td]R[/td][td]鶸[/td][/tr][tr][td]S[/td][td]蜶[/td][/tr][tr][td]T[/td][td]箨[/td][/tr][tr][td]W[/td][td]鹜[/td][/tr][tr][td]X[/td][td]鑂[/td][/tr][tr][td]Y[/td][td]韵[/td][/tr][tr][td]Z[/td][td]咗[/td][/tr][/table]
3、取拼音首字母的函数:
DELIMITER $$
DROP FUNCTION IF EXISTS `test`.`func_get_first_letter`$$
CREATE DEFINER=`root`@`localhost` FUNCTION `func_get_first_letter`(
words varchar(255)) RETURNS char(1) CHARSET utf8
BEGIN
declare fpy char(1);
declare pc char(1);
declare cc char(4);
set @fpy = UPPER(left(words,1));
set @pc = (CONVERT(@fpy USING gbk));
set @cc = hex(@pc);
if @cc >= "8140" and @cc <="FEA0" then
begin
select PY from cs_char2letter where hz>=@pc limit 1 into @fpy;
end;
end if;
Return @fpy;
END$$
DELIMITER ;
4、测试结果:
[table=95%,#f1f1f1][tr][td][color=#000][color=#00ff]select[/color] func_get_first_letter[color=#00cc]([/color][color=#ff0ff]'我是月亮'[/color][color=#00cc])[/color][color=#00cc],[/color]func_get_first_letter[color=#00cc]([/color][color=#ff0ff]'月亮是我'[/color][color=#00cc])[/color][color=#00cc],[/color]func_get_first_letter[color=#00cc]([/color][color=#ff0ff]'他爸也是我'[/color][color=#00cc])[/color][color=#00cc];[/color][/color]
[/td][/tr][/table]
query result(1 records)[table][tr][td]func_get_first_letter('我是月亮')[/td][td]func_get_first_letter('月亮是我')[/td][td]func_get_first_letter('他爸也是我')[/td][/tr][tr][td]W[/td][td]Y[/td][td]T[/td][/tr][/table]
psss0217 2008-12-18 11:11
你这个有问题
(0 row(s) affected, 1 warning(s))
Execution Time : 00:00:00:000
Transfer Time : 00:00:00:000
Total Time : 00:00:00:000
Error Code : 1227
Access denied; you need the SUPER privilege for this operation
Execution Time : 00:00:00:000
Transfer Time : 00:00:00:000
Total Time : 00:00:00:000