1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > mysql按中文拼音排序_按拼音排序 mysql 按中文拼音顺序排序

mysql按中文拼音排序_按拼音排序 mysql 按中文拼音顺序排序

时间:2018-12-20 16:00:19

相关推荐

mysql按中文拼音排序_按拼音排序 mysql 按中文拼音顺序排序

1,简单方法

如果字符集采用的是 gbk(汉字编码字符集),直接在查询语句后边添加 ORDER BY:

SELECT * FROM table ORDER BY title;

如果字符集采用的是 utf8(万国码),需要先对字段进行转码然后排序:

SELECT * FROM table ORDER BY CONVERT(title using gbk);

2.连表查询 好处可以得到属于哪个字母

CREATE TABLE IF NOT EXISTS `letter` (

`letter` char(1) NOT NULL COMMENT 'ID',

`begin` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '',

`end` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '',

PRIMARY KEY (`letter`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='';

INSERT INTO `letter` VALUES ('A', 45217, 45252);

INSERT INTO `letter` VALUES ('B', 45253, 45760);

INSERT INTO `letter` VALUES ('C', 45761, 46317);

INSERT INTO `letter` VALUES ('D', 46318, 46825);

INSERT INTO `letter` VALUES ('E', 46826, 47009);

INSERT INTO `letter` VALUES ('F', 47010, 47296);

INSERT INTO `letter` VALUES ('G', 47297, 47613);

INSERT INTO `letter` VALUES ('H', 47614, 48118);

INSERT INTO `letter` VALUES ('J', 48119, 49061);

INSERT INTO `letter` VALUES ('K', 49062, 49323);

INSERT INTO `letter` VALUES ('L', 49324, 49895);

INSERT INTO `letter` VALUES ('M', 49896, 50370);

INSERT INTO `letter` VALUES ('N', 50371, 50613);

INSERT INTO `letter` VALUES ('O', 50614, 50621);

INSERT INTO `letter` VALUES ('P', 50622, 50905);

INSERT INTO `letter` VALUES ('Q', 50906, 51386);

INSERT INTO `letter` VALUES ('R', 51387, 51445);

INSERT INTO `letter` VALUES ('S', 51446, 52217);

INSERT INTO `letter` VALUES ('T', 52218, 52697);

INSERT INTO `letter` VALUES ('W', 52698, 52979);

INSERT INTO `letter` VALUES ('X', 52980, 53640);

INSERT INTO `letter` VALUES ('Y', 53689, 54480);

INSERT INTO `letter` VALUES ('Z', 54481, 55289);

SELECT * FROM `je_region` a left join `letter` b on CONV(HEX(left(CONVERT(a.region_name using gbk),1)),16,10) between b.begin and b.end where region_type=2 order by b.letter limit 600

SELECT * FROM `je_region` a left join `letter` b on CONV(HEX(left(CONVERT(a.region_name using gbk),1)),16,10) between b.begin and b.end where region_type=2 order by CONVERT(a.region_name using gbk) limit 600

CONV(HEX(left(s.softName,1)),16,10) between c.cBegin and c.cEnd //把字母表左联 按要找的字段 排序按CONVERT(a.region_name using gbk)才准确 有些汉字没在字母表内

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。