GVKun编程网logo

Mysql应用mysql汉字字段按拼音排序的方法(mysql按照中文拼音排序)

20

本文将分享Mysql应用mysql汉字字段按拼音排序的方法的详细内容,并且还将对mysql按照中文拼音排序进行详尽解释,此外,我们还将为大家带来关于JS实现中文汉字按拼音排序的方法、JS实现汉字按拼音

本文将分享Mysql应用mysql汉字字段按拼音排序的方法的详细内容,并且还将对mysql按照中文拼音排序进行详尽解释,此外,我们还将为大家带来关于JS实现中文汉字按拼音排序的方法、JS实现汉字按拼音排序的方法、mysql中文汉字按拼音字母排序方法、Mysql入门mysql 中如何取得汉字字段的各汉字首字母的相关知识,希望对你有所帮助。

本文目录一览:

Mysql应用mysql汉字字段按拼音排序的方法(mysql按照中文拼音排序)

Mysql应用mysql汉字字段按拼音排序的方法(mysql按照中文拼音排序)

《MysqL应用MysqL汉字字段按拼音排序的方法》要点:
本文介绍了MysqL应用MysqL汉字字段按拼音排序的方法,希望对您有用。如果有疑问,可以联系我们。

导读:本节内容:MysqL汉字字段按拼音排序MysqL使用latin1的默认字符集,对汉字字段直接使用GBK内码的编码进行存储,当需要对一些有汉字的字段进...

MysqL教程本节内容:
MysqL汉字字段按拼音排序

MysqL教程MysqL使用latin1的默认字符集,当需要对一些有汉字的字段进行拼音排序时(特别涉及到类似于名字这样的字段时),默认无法通过order by关键字正确排序.

MysqL教程针对使用utf8字符集的数据库,主要的办法有:
1)直接转换字段为gbk,比如:
 

SELECT * FROM table ORDER BY CONVERT( chinese_field USING gbk ) ;
 

MysqL教程或干脆将相应字段改为gbk字符集.

MysqL教程在数据库中测试了上面的办法,或直接按字段排序,都不行,主要是排序结果不理想.
 

mysql汉字字段按拼音排序的方法

MysqL教程2)查表法
创建一个新表,用来存储拼音声母和使用该声母的汉字首字的对应关系.
然后,写一个函数,每次排序时通过转换为gbk再查表的办法得到字段内容首字的声母的办法.

MysqL教程这个办法也测试过,比较麻烦,而且针对我的数据库,也不能正确排序.

MysqL教程后来,查询了汉字编码的一些资料,发现GBK内码编码时本身就采用了拼音排序的办法(常用一级汉字3755个采用拼音排序,二级汉字就不是了,但考虑到人名等都是常用汉字,因此只是针对一级汉字能正确排序也够用了).

MysqL教程根据此原理,直接按字段排序就应该可以的(我的数据库使用latin1字符集,存的汉字本来就是GBK内码),但我试了以后发现不行.
参考上面办法2的查表法,我把字段内容转换为16进制编码,再排序,就可以了.

MysqL教程最终的方法:
 

SELECT * FROM table ORDER BY hex( chinese_field )

MysqL教程输出结果,如下图:
 

mysql汉字字段按拼音排序的方法

MysqL教程附:汉字编码方式简介
ASCII

MysqL教程    ASCII码是7位编码,编码范围是0x00-0x7F.ASCII字符集包含英文字母、阿拉伯数字和标点符号等字符.其中0x00-0x20和0x7F共33个控制字符.

MysqL教程    只支持ASCII码的系统会忽略每个字节的最高位,只认为低7位是有效位.HZ字符编码就是早期为了在只支持7位ASCII系统中传输中文而设计的编码.早期很多邮件系统也只支持ASCII编码,为了传输中文邮件必须使用BASE64或者其他编码方式.

MysqL教程GB2312

MysqL教程    GB2312 是基于区位码设计的,区位码把编码表分为94个区,每个区对应94个位,每个字符的区号和位号组合起来就是该汉字的区位码.区位码一般 用10进制数来表示,如1601就表示16区1位,对应的字符是“啊”.在区位码的区号和位号上分别加上0xA0就得到了GB2312编码.

MysqL教程    区位码中01-09区是符号、数字区,16-87区是汉字区,10-15和88-94是未定义的空白区.它将收录的汉字分成两级:第一级是常用汉字计 3755个,置于16-55区,按汉语拼音字母/笔形顺序排列;第二级汉字是次常用汉字计3008个,置于56-87区,按部首/笔画顺序排列.一级汉字 是依照拼音排序的,这个就可以得到某个拼音在一级汉字区位中的范围,很多根据汉字可以得到拼音的程序就是根据这个原理编写的.

MysqL教程    GB2312字符集中除常用简体汉字字符外还包含希腊字母、日文平假名及片假名字母、俄语西里尔字母等字符,未收录繁体中文汉字和一些生僻字.可以用繁体汉字测试某些系统是不是只支持GB2312编码.

MysqL教程    GB2312的编码范围是0xA1A1-0x7E7E,去掉未定义的区域之后可以理解为实际编码范围是0xA1A1-0xF7FE.

MysqL教程EUC-CN可以理解为GB2312的别名,和GB2312完全相同.

MysqL教程区位码更应该认为是字符集的定义,定义了所收录的字符和字符位置,而GB2312及EUC-CN是实际计算机环境中支持这种字符集的编码.HZ和ISO-2022-CN是对应区位码字符集的另外两种编码,都是用7位编码空间来支持汉字.区位码和GB2312编码的关系有点像 和.

MysqL教程GBK

MysqL教程    GBK 编码是GB2312编码的超集,向下完全兼容GB2312,同时GBK收录了Unicode基本多文种平面中的所有CJK汉字.同 GB2312一样,GBK也支持希腊字母、日文假名字母、俄语字母等字符,但不支持韩语中的表音字符(非汉字字符).GBK还收录了GB2312不包括的 汉字部首符号、竖排标点符号等字符.

MysqL教程    GBK的整体编码范围是为0x8140-0xFEFE,不包含低字节是0×7F的组合.高字节范围是0×81-0xFE,低字节范围是0x40-7E和0x80-0xFE.

MysqL教程低字节是0x40-0x7E的GBK字符有一定特殊性,因为这些字符占用了ASCII码的位置,这样会给一些系统带来麻烦.

MysqL教程    有些系统中用0x40-0x7E中的字符(如“|”)做特殊符号,在定位这些符号时又没有判断这些符号是不是属于某个 GBK字符的低字节,这样就会造成错误判断.在支持GB2312的环境下就不存在这个问题.需要注意的是支持GBK的环境中小于0x80的某个字节未必就 是ASCII符号;另外就是最好选用小于0×40的ASCII符号做一些特殊符号,这样就可以快速定位,且不用担心是某个汉字的另一半.Big5编码中也 存在相应问题.

MysqL教程    CP936和GBK的有些许差别,绝大多数情况下可以把CP936当作GBK的别名.

MysqL教程GB18030

MysqL教程    GB18030编码向下兼容GBK和GB2312,兼容的含义是不仅字符兼容,而且相同字符的编码也相同.GB18030收录了所有Unicode3.1中的字符,包含中国少数民族字符,GBK不支持的韩文字符等等,也可以说是世界大多民族的文字符号都被收录在内.

MysqL教程    GBK和GB2312都是双字节等宽编码,如果算上和ASCII兼容所支持的单字节,也可以理解为是单字节和双字节混合的变长编码.GB18030编码是变长编码,有单字节、双字节和四字节三种方式.

MysqL教程GB18030 的单字节编码范围是0x00-0x7F,完全等同与ASCII;双字节编码的范围和GBK相同,高字节是0x81-0xFE,低字节的编码范围是0x40 -0x7E和0x80-FE;四字节编码中第一、三字节的编码范围是0x81-0xFE,二、四字节是0x30-0x39.

MysqL教程    Windows 中CP936代码页使用0x80来表示欧元符号,而在GB18030编码中没有使用0x80编码位,用其他位置来表示欧元符号.这可以理解为是 GB18030向下兼容性上的一点小问题;也可以理解为0x80是CP936对GBK的扩展,而GB18030只是和GBK兼容良好.

MysqL教程unicode

MysqL教程    每一种语言的不同的编码页,增加了那些需要支持不同语言的软件的复杂度.因而人们制定了一个世界标准,叫做unicode.unicode为每个字符提供 了唯一的特定数值,不论在什么平台上、不论在什么软件中,也不论什么语言.也就是说,它世界上使用的所有字符都列出来,并给每一个字符一个唯一特定数值.

MysqL教程    Unicode的最初目标,是用1个16位的编码来为超过65000字符提供映射.但这还不够,它不能覆盖全部历史上的文字,也不能办理传输的问题 (implantation head-ache's),尤其在那些基于网络的应用中.已有的软件必须做大量的工作来程序16位的数据.

MysqL教程    因 此,Unicode用一些基本的保存字符制定了三套编码方式.它们分别是UTF-8,UTF-16和UTF-32.正如名字所示,在UTF-8中,字符是 以8位序列来编码的,用一个或几个字节来表示一个字符.这种方式的最大好处,是UTF-8保存了ASCII字符的编码做为它的一部分,例如,在UTF-8 和ASCII中,“A”的编码都是0x41.

MysqL教程    UTF-16和UTF-32分别是Unicode的16位和32位编码方式.考虑到最初的目的,通常说的Unicode就是指UTF-16.在讨论Unicode时,搞清楚哪种编码方式非常重要.

MysqL教程UTF-8

MysqL教程    Unicode Transformation Format-8bit,允许含BOM,但通常不含BOM.是用以办理国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三 个字节)来编码.UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强.UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显 示.如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包.

MysqL教程GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1.GBK包括全部中文字符,是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBD大.

MysqL教程    GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换:
    GBK、GB2312→Unicode→UTF8
    UTF8→Unicode→GBK、GB2312

MysqL教程    对于一个网站、论坛来说,如果英笔墨符较多,则建议使用UTF-8节省空间.不过现在很多论坛的插件一般只支持GBK.

MysqL教程Windows的ANSI

MysqL教程    为使计算机支持更多语言,通常使用 0x80~0xFF 范围的 2 个字节来表示 1 个字符.好比:汉字 '中' 在中文操作系统中,使用 [0xD6,0xD0] 这两个字节存储.

MysqL教程  不同的国家和地区制定了不同的标准,由此产生了 GB2312,BIG5,JIS 等各自的编码标准.这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码.在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码.

MysqL教程  不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的笔墨,存储在同一段 ANSI 编码的文本中.

小编PHP培训学院每天发布《MysqL应用MysqL汉字字段按拼音排序的方法》等实战技能,PHP、MysqL、LINUX、APP、JS,CSS全面培养人才。

JS实现中文汉字按拼音排序的方法

JS实现中文汉字按拼音排序的方法

本文实例讲述了JS实现中文汉字按拼音排序的方法。分享给大家供大家参考,具体如下:

代码1,拼音排序:

rush:js;"> var array = ['武汉','北京','上海','天津']; var resultArray = array.sort( function compareFunction(param1,param2) { return param1.localeCompare(param2,"zh"); } ); console.log(resultArray);

火狐浏览器 resultArray 结果为:

rush:js;"> [ '北京','天津','武汉' ] ;

代码2,拼音排序并按字母分类:

rush:js;"> function pySegSort(arr,empty) { if(!String.prototype.localeCompare) return null; var letters = "*abcdefghjklmnopqrstwxyz".split(''); var zh = "阿八嚓哒妸发旮哈讥咔垃痳拏噢妑七呥扨它穵夕丫帀".split(''); var segs = []; var curr; $.each(letters,function(i){ curr = {letter: this,data:[]}; $.each(arr,function() { if((!zh[i-1] || zh[i-1].localeCompare(this,"zh") <= 0) && this.localeCompare(zh[i],"zh") == -1) { curr.data.push(this); } }); if(empty || curr.data.length) { segs.push(curr); curr.data.sort(function(a,b){ return a.localeCompare(b,"zh"); }); } }); return segs; } JSON.stringify(pySegSort(["我","不","懂","爱","啊","按","已","呀","选","县"]))

结果:

rush:js;"> "[   {"letter":"a","data":["啊","按"]},  {"letter":"b","data":["不"]},  {"letter":"d","data":["懂"]},  {"letter":"w","data":["我"]},  {"letter":"x","data":["县","选"]},  {"letter":"y","data":["呀","已"]} ]"

扩展:

JS获取中文拼音首字母,并通过拼音首字母快速查找页面内的中文内容: JS实现超简单的汉字转拼音功能示例: 一个实现汉字与拼音互转的小巧web工具库:

PS:这里再为大家推荐2款比较实用的相关在线排序工具供大家参考使用:

在线中英文根据首字母排序工具:

在线文本倒序翻转排序工具:

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》、《》、《》及《用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

JS实现汉字按拼音排序的方法

JS实现汉字按拼音排序的方法

本文主要介绍了js实现中文汉字按拼音排序的方法,涉及javascript针对中文字符串的转换、遍历、排序等相关操作技巧,需要的朋友可以参考下,希望能帮助到大家。

代码1,拼音排序:


var array = [&#39;武汉&#39;, &#39;北京&#39;, &#39;上海&#39;, &#39;天津&#39;];
var resultArray = array.sort(
 function compareFunction(param1, param2) {
  return param1.localeCompare(param2,"zh");
 }
);
console.log(resultArray);
登录后复制

火狐浏览器 resultArray 结果为:


[ &#39;北京&#39; , &#39;上海&#39; , &#39;天津&#39; ,&#39;武汉&#39; ] ;
登录后复制

代码2,拼音排序并按字母分类:


function pySegSort(arr,empty) {
 if(!String.prototype.localeCompare)
  return null;
 var letters = "*abcdefghjklmnopqrstwxyz".split(&#39;&#39;);
 var zh = "阿八嚓哒妸发旮哈讥咔垃痳拏噢妑七呥扨它穵夕丫帀".split(&#39;&#39;);
 var segs = [];
 var curr;
 $.each(letters, function(i){
  curr = {letter: this, data:[]};
  $.each(arr, function() {
   if((!zh[i-1] || zh[i-1].localeCompare(this,"zh") <= 0) && this.localeCompare(zh[i],"zh") == -1) {
    curr.data.push(this);
   }
  });
  if(empty || curr.data.length) {
   segs.push(curr);
   curr.data.sort(function(a,b){
    return a.localeCompare(b,"zh");
   });
  }
 });
 return segs;
}
JSON.stringify(pySegSort(["我","不","懂","爱","啊","按","已","呀","选","县"]))
登录后复制

结果:


"[
  {"letter":"a","data":["啊","爱","按"]},
  {"letter":"b","data":["不"]},
  {"letter":"d","data":["懂"]},
  {"letter":"w","data":["我"]},
  {"letter":"x","data":["县","选"]},
  {"letter":"y","data":["呀","已"]}
]"
登录后复制

相关推荐:

关于中文按照拼音排序

mysql中文拼音排序实现方法

JavaScript实现拼音排序的方法_javascript技巧

以上就是JS实现汉字按拼音排序的方法的详细内容,更多请关注php中文网其它相关文章!

mysql中文汉字按拼音字母排序方法

mysql中文汉字按拼音字母排序方法

本文章介绍了在mysql中如何利用中文汉字按拼音字母排序,有需要的朋友可参考一下。

默认出来的结果并不是按汉字拼音的顺序来排序,要想按汉字的拼音来排序,需要把数据库的字符集设置为utf8,然后在order by 时候强制把该字段信息转换成gbk,这样出来的结果就是按拼音顺序排序的

 代码如下 复制代码

SELECT * FROM table_name ORDER BY CONVERT(column_name USING gbk);

此方法主要是用到了convert函数,关于此函数说明


MySQL CONVERT函数的例子:

 代码如下 复制代码

SELECT CONVERT(_latin1''Mgller'' USING utf8);
INSERT INTO utf8table (utf8column)
SELECT CONVERT(latin1field USING utf8) FROM latin1table;
CONVERT(... USING ...)

根据标准SQL规范实施。

在传统SQL模式中,如果你转换一个“0”日期字符串到日期类型,CONVERT()函数返回NULL。在MySQL5.1中还产生一条警告。

Mysql入门mysql 中如何取得汉字字段的各汉字首字母

Mysql入门mysql 中如何取得汉字字段的各汉字首字母

《MysqL入门MysqL 中如何取得汉字字段的各汉字首字母》要点:
本文介绍了MysqL入门MysqL 中如何取得汉字字段的各汉字首字母,希望对您有用。如果有疑问,可以联系我们。

DROP FUNCTION IF EXISTS `getPY`; 
DELIMITER ;; 
CREATE FUNCTION `getPY`(in_string VARCHAR(65534)) RETURNS mediumtext CHARSET utf8 
BEGIN 
DECLARE tmp_str VARCHAR(65534) charset gbk DEFAULT '' ; #截取字符串,每次做截取后的字符串存放在该变量中,初始为函数参数in_string值 
DECLARE tmp_len SMALLINT DEFAULT 0;#tmp_str的长度 
DECLARE tmp_char VARCHAR(2) charset gbk DEFAULT '';#截取字符,每次 left(tmp_str,1) 返回值存放在该变量中 
DECLARE tmp_rs VARCHAR(65534) charset gbk DEFAULT '';#结果字符串 
DECLARE tmp_cc VARCHAR(2) charset gbk DEFAULT '';#拼音字符,存放单个汉字对应的拼音首字符 
SET tmp_str = in_string;#初始化,将in_string赋给tmp_str 
SET tmp_len = LENGTH(tmp_str);#初始化长度 
WHILE tmp_len > 0 DO #如果被计算的tmp_str长度大于0则进入该while 
SET tmp_char = LEFT(tmp_str,1);#获取tmp_str最左端的首个字符,注意这里是获取首个字符,该字符可能是汉字,也可能不是. 
SET tmp_cc = tmp_char;#左端首个字符赋值给拼音字符 
IF LENGTH(tmp_char)>1 THEN#判断左端首个字符是多字节还是单字节字符,要是多字节则认为是汉字且作以下拼音获取,要是单字节则不处理. 
SELECT ELT(INTERVAL(CONV(HEX(tmp_char),16,10),0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7,0xBFA6,0xC0AC,0xC2E8,0xC4C3,0xC5B6,0xC5BE,0xC6DA,0xC8BB,0xC8F6,0xCBFA,0xCDDA,0xCEF4,0xD1B9,0xD4D1),'A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','W','X','Y','Z') INTO tmp_cc; #获得汉字拼音首字符 
END IF; 
SET tmp_rs = CONCAT(tmp_rs,tmp_cc);#将当前tmp_str左端首个字符拼音首字符与返回字符串拼接 
SET tmp_str = SUBSTRING(tmp_str,2);#将tmp_str左端首字符去除 
SET tmp_len = LENGTH(tmp_str);#计算当前字符串长度 
END WHILE; 
RETURN tmp_rs;#返回结果字符串 
END;; 
DELIMITER ;

关于Mysql应用mysql汉字字段按拼音排序的方法mysql按照中文拼音排序的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于JS实现中文汉字按拼音排序的方法、JS实现汉字按拼音排序的方法、mysql中文汉字按拼音字母排序方法、Mysql入门mysql 中如何取得汉字字段的各汉字首字母的相关知识,请在本站寻找。

本文标签:

上一篇Mysql入门mysql中rollup和limit的用法 mysql中where子句的优化(mysql rowid用法)

下一篇Mysql必读mysql高效分页的实例分析(mysql 高效分页)