MySQL拼音排序解决方案

sickhead 2007-08-20 08:51:52
有个学生问到mysql中文按拼音排序的问题,因是j2ee应用,最好保持原应用的页面和数据库编码utf-8不变。现贴出自己的方案如下,不知是否有其他就更好的方法希朋友们指出?

1.说明:
windowXP
版本:mysql5.1.14
jdbc驱动:mysql-connector-java-5.0.4-bin.jar
jdbc URL: jdbc:mysql://localhost/test?user=root&password=root
页面编码utf-8:<%@ page language="java" import="java.util.*"
contentType="text/html; charset=utf-8" pageEncoding="UTF-8"%>

2.mysql数据库字符集:
方式一:
启动服务:mysqld --default-character-set=utf8
方式二:
在my.ini中设置[mysqld]小节:default-character-set=utf8
,然后启动mysql服务。

3.创建测试库、表:
create database test_db
use test
create table test(
name varchar(20)
)character set gb2312 collate gb2312_chinese_ci;
alter table test character set utf8;

4.核实测试表:
show create table test;
+-------+-------------------------------------------------
| Table | Create Table
+-------+-------------------------------------------------
| test | CREATE TABLE `test` (
`name` varchar(20) CHARACTER SET gb2312 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
+-------+-------------------------------------------------
存储引擎根据实际情况可以修改为innoDB
5.插入测试数据:
mysql>set names gb2312;
mysql>show variables where variable_name like '%character%';
+--------------------------+-------------------------------------------
| Variable_name | Value
+--------------------------+-------------------------------------------
| character_set_client | gb2312
| character_set_connection | gb2312
| character_set_database | utf8
| character_set_filesystem | binary
| character_set_results | gb2312
| character_set_server | utf8
| character_set_system | utf8
insert into test values('必');
insert into test values('吴');
insert into test values('在');
insert into test values('哦');
insert into test values('恶');
insert into test values('是');
insert into test values('提');
insert into test values('阿');

select * from test ordber by name;

6.从jsp页面上检索、提交中文数据,正常。





...全文
962 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yifuzhiming 2007-08-31
  • 打赏
  • 举报
回复
多加一个字段上去,用来存放拼音 ,这样就可以排序了
sickhead 2007-08-20
  • 打赏
  • 举报
回复
设置一个拼音字段适合处理一些基本信息,这些信息一般不变,可以按拼音字段来排序检索,但由用户来维护的数据就不适合了,如果那样就需要有一个中文转拼音的功能方法,才可以添加新数据了。
懒得去死 2007-08-20
  • 打赏
  • 举报
回复
没有两外一个字段存放拼音的?

57,064

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧