mysql 中文字段排序】的更多相关文章

在处理使用Mysql时,数据表采用utf8字符集,使用中发现中文不能直接按照拼音排序 如果数据表tbl的某字段name的字符编码是latin1_swedish_ci select * from `tbl` order by birary(name) asc ; 如果数据表tbl的某字段name的字符编码是utf8_general_ci SELECT name FROM `tbl` WHERE 1 ORDER BY CONVERT( name USING gbk ) COLLATE gbk_chi…
方法1)select * from mytable order by CONVERT(chineseColumnName USING gbk);  (备注:chineseColumnName 位排序字段) 方法2)对于包含中文的字段加上"binary"属性,使之作为二进制比较,例如将"name char(10)"改成"name char(10)binary". 原因: 在MySQL中,进行中文排序和查找的时候,对汉字的排序和查找结果是错误的. 这…
select * from tableName CONVERT( FieldName USING gbk ) COLLATE gbk_chinese_ci desc…
在处理排序规则的时候,有时候我们会需要选择用一些中文字段来排序,实现我们在工作中的需求,下面是在处理排序的时候,适用的方式展示. SELECT t.lawcheckcolumnid AS id,t.chapter,t.item,COUNT(resultexplain) AS num FROM lawcheckcolumn t  LEFT JOIN lawcheckresult tt on tt.lawcheckcolumnid = t.lawcheckcolumnid  WHERE t.lawc…
http://ourmysql.com/archives/391   测试后我发现,gbk不仅对字符内容是按拼音排序的,对数字也是一样,使用时需注意!     另外一篇文章: MySQL按中文拼音排序…
创建存储过程,将中文字段转拼音首字母 CREATE DEFINER=`root`@`%` FUNCTION `fristPinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8 BEGIN DECLARE V_RETURN VARCHAR(255); SET V_RETURN = ELT(INTERVAL(CONV(HEX(left(CONVERT(P_NAME USING gbk),1)),16,10), 0xB0A1,0xB…
1.对中文进行排序时会发生错误,原因是使用的字符集不是中文的字符集: 解决:CONVERT函数 SELECT a.id,a.`name`,a.ch_name FROM `user` a ORDER BY CONVERT(a.ch_name USING gbk) ASC;…
在mysql中 如果字段的值是中文的话,排序结果往往不符合人意. 所以如果要中文排序正常的话,可以使用如下函数 SELECT huayangare0_.id AS id1_0_, huayangare0_.create_date AS create_d2_0_, huayangare0_.create_id AS create_i3_0_, huayangare0_.uid AS uid4_0_, huayangare0_.update_date AS update_d5_0_, huayang…
最近项目向MySql迁移,迁移完毕后,在获取用户权限时产生了一个异常,跟踪进去获取执行的语句如下, SELECT PermissionId FROM spysxtPermission WHERE (ResourceCategory = 'BaseUser' ) UNION SELECT PermissionId FROM spysxtPermission , ( SELECT RoleId FROM spysxtUserRole ) UNION SELECT RoleId ) ) B WHERE…
1 前言 项目中排行榜刚好需要查数据库表然后给出编号,方案一,可以按条件查找出来,然后再按数组序号给编号,但是如果要查表出来直接看,就不太够用了:方案二,就是用代码帮忙编号.参考了网上一些代码,然后发现方法都有一个样的,然后这边只是作为记录使用,方便查找. 2 代码 SELECT province_id, province_name, gdp, (@i :=@i + 1) AS No FROM province, (SELECT @i := 0) AS it ORDER BY gdp DESC…
今天遇到一个需求,要求排序输出网格信息,但是数据是第三方对接插入的,并没有给我们排好顺序.所以只能自己动手了. 下图是原数据: 我们需要将其升序输出.使用mysql中的函数FIELD.语法如下: SELECT identifier FROM 表名 ORDER BY FIELD(SUBSTRING(identifier,3,1),'一','二','三','四','五','六','七','八','九'); 1)ORDER BY 不用多说,排序2)SUBSTRING的作用是截取到我们想要排序的依据,这…
在对数据库进行查询的时候有时候需要将查询的结果按照某字段升序或者降序排列,甚至有时候需要按照某两个字段进行升降序排列.如果按照某一字段进行排列,只需要在查询语句最后写上 "order by 列名 asc"(升序) 或者 "order by 列名 desc"(降序)即可,那么如果按照字段A升序,字段B降序排列怎么做呢?答案是----select 列名 from 表名 where *** order by A acs,order by B deac,这样就能达到要求了.…
SELECT 字段名 FROM 表 ORDER BY CONVERT(字段名 USING gbk) ASC;…
SELECT switch_data.* , lan_data.ename FROM switch_data , lan_data WHERE switch_data.address = '佳合丽景' and switch_data.swip = lan_data.lanip order by switch_data.huiju asc ,switch_data.men asc,switch_data.zeng asc order by xxx asc , xxx desc , xxx acs…
转载自网络! 1. 在MySQL中,我们经常会对一个字段进行排序查询,但进行中文排序和查找的时候,对汉字的排序和查找结果往往都是错误的. 这种情况在MySQL的很多版本中都存在. 如果这个问题不解决,那么MySQL将无法实际处理中文. 出现这个问题的原因是因为MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象. 2.解决方法:对于包含中文的字段加上"binary"属性,使之作为二…
代码如下: $conn = new mysqli('localhost', 'root', '', 'excel');$sql = "select 中信一级行业 from excel group by 中信一级行业 order by convert(中信一级行业 USING gbk) COLLATE gbk_chinese_ci";//按中文排序$query = $conn->query($sql);$firstClass = array();//一类行业总集$result =…
MySQL常规排序.自定义排序和按中文拼音字母排序,在实际的SQL编写时,我们有时候需要对条件集合进行排序. 下面给出3中比较常用的排序方式,mark一下 1.常规排序ASC DESC ASC 正序 DESC倒叙 -- 此处不用多讲 2.自定义排序 自定义排序是根据自己想要的特定字符串(数字)顺序进行排序. 主要是使用函数 FIELD(str,str1,str2,str3,...) MySQL的自定义排序,str与str1.str2.str3...进行比较,并按照str1,str2,str3..…
mysql按照中文名称排序   Sql代码  www.2cto.com   /*   Navicat MySQL Data Transfer      Source Server         : local   Source Server Version : 50022   Source Host           : localhost:3306   Source Database       : test      Target Server Type    : MYSQL   Tar…
在mysql数据库中可以使用GBK编码对中文进行排序,如名字按首字母排序 order by convert(substr(tu.username,1,1) using 'GBK') 其中substr方法截取第一个字母也就是姓氏,然后转成GBK编码进行排序 这个方式我觉得还是相当有意思的…
当MySQL查询时排序的字段不是数字时而是汉字的时候也可以用when  then 来指定排序. 列如yewu_check表的status 字段不是0,1,2而是汉字待办,已办,退回.可以如下写法: SELECT * FROM yewu_check  ORDER BY CASE  WHEN STATUS='待办' THEN 2 WHEN STATUS='已办' THEN 1 ELSE 0 END DESC 结果:…