登录 |

MySQL获取汉字拼音首字母函数

2008年03月14日 下午 16:58 | 作者:hemon

做价格数据库(http://cms.xxty.cn/price),农产品搜索提示需要支持字母,网上的mysql函数只支持单个汉字,另外SQL也写得不规范,重写:支持多个汉字。
用法:
SELECT pinyin(’精神鸦片’);
=> JSYP

  1. DROP TABLE IF EXISTS `pinyin`;
  2.  
  3. CREATE TABLE `pinyin` (
  4.   `letter` char(1) NOT NULL,
  5.   `chinese` char(1) NOT NULL,
  6.   PRIMARY KEY  (`letter`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=gbk;
  8.  
  9. insert  into `pinyin`(`letter`,`chinese`) values 
  10. ('A',''),
  11. ('B','簿'),
  12. ('C',''),
  13. ('D',''),
  14. ('E',''),
  15. ('F',''),
  16. ('G',''),
  17. ('H',''),
  18. ('J',''),
  19. ('K',''),
  20. ('L',''),
  21. ('M',''),
  22. ('N',''),
  23. ('O',''),
  24. ('P',''),
  25. ('Q',''),
  26. ('R',''),
  27. ('S',''),
  28. ('T',''),
  29. ('W',''),
  30. ('X',''),
  31. ('Y',''),
  32. ('Z','');
  33.  
  34. DELIMITER $$
  35.  
  36. DROP FUNCTION IF EXISTS `PINYIN`$$
  37.  
  38. CREATE FUNCTION `PINYIN`(str CHAR(255)) RETURNS char(255)
  39. BEGIN
  40. DECLARE hexCode char(4);
  41. DECLARE pinyin varchar(255);
  42. DECLARE firstChar char(1);
  43. DECLARE aChar char(1);
  44. DECLARE pos int;
  45. DECLARE strLength int;
  46.  
  47. SET pinyin    = '';
  48. SET strLength = CHAR_LENGTH(LTRIM(RTRIM(str)));
  49. SET pos       = 1;
  50. SET @str      = (CONVERT(str USING gbk));
  51. WHILE pos <= strLength DO
  52.         SET @aChar = SUBSTRING(@str,pos,1);
  53.         SET hexCode = HEX(@aChar);
  54.  
  55.     IF hexCode >= "8140" AND hexCode <= "FEA0" THEN  
  56.         SELECT letter into firstChar
  57.         FROM   pinyin  
  58.         WHERE  chinese >= @aChar
  59.         LIMIT  1;
  60.         END IF;
  61.  
  62.     SET pinyin = CONCAT(pinyin,firstChar);
  63.     SET pos = pos + 1;
  64. END WHILE
  65.     
  66. RETURN UPPER(pinyin);
  67. END$$
  68.  
  69. DELIMITER ;

天意的指示

2008年03月4日 下午 14:09 | 作者:hemon

什么涨价买什么

今天涨停的,涨的好的,全是新能源,化肥,农药
像钱江生化,是做农药的
六国化工,也是
广东甘化和南宁糖业是做糖的,糖的期货在涨价
贵糖股份也是糖厂
华帝是有利好出来

其实,好股票就是看新闻,看出来的

现在摆明了一点,国家在扶持农业,他们就只涨