首页
学习
活动
专区
圈层
工具
发布

Thinkphp中MySQL按照中文拼音排序问题的处理

背景 由于客户需求,需要按照汉字的首字拼音排序,项目开发中免不了数据的排序问题,排序中又免不了对中文的处理。...今天分享一下如何在mysql中对中文进行排序,介绍下thinkphp连贯操作的order底层原理 例:M(‘Project’)->order(‘name’)->select(); 这段代码最后转换成原生...php代码是这样的: select * from `project` order by `name`; 原生代码按照汉字排序是这样的: select * from `project` order by...数据查询的时候不管是按添加时间还是按修改时间排序,用户都不满意,领导说:应该按照名字排序嘛,这样用户就可以预见他想要的数据在什么地方了 ?...第二种 修改表结构不修改查询语句: 重点在红框位置,告诉mysql这个字段按照gbk编码处理(也可以是gb2312_chinese_ci) ? ?

3.4K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    R中按照数字大小进行排序

    在R中有时会需要通过数字大小对某些数据进行排序。 不过R默认是按照字符大小顺序进行排序,如常见的OTU名称: OTU1,OTU2,OTU3,OTU10 ,OTU20......会被默认排序为: OTU1,OTU10,OTU2,OTU20,OTU3... 这在一些数据处理和画图过程非常不方便。...如果要按照数字排序为OTU1,OTU2,OTU10这种,可以有很多方法,本文举几种简单的例子: ---- 先读进一个OTU表~ otu = read.table(file = "otu.txt",sep...= 1,header=T,check.names=F) # 行名为OTU的名字 name = rownames(OTU) 1. gtools包的mixedorder函数,一步到位直接对OTU名字中的数字排序...OTU名字去掉OTU只保留数字再排序: c = order(as.numeric(gsub("OTU","",name))) otu2 = otu[c,] 4.OTU名字中的OTU和数字分开,单独对数字排序

    3.1K51

    mysql 中取得汉字字段的各汉字首字母

    mediumtext CHARSET utf8 BEGIN DECLARE tmp_str VARCHAR(65534) charset gbk DEFAULT '' ; #截取字符串,每次做截取后的字符串存放在该变量中,...0;#tmp_str的长度 DECLARE tmp_char VARCHAR(2) charset gbk DEFAULT '';#截取字符,每次 left(tmp_str,1) 返回值存放在该变量中...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#判断左端首个字符是多字节还是单字节字符,要是多字节则认为是汉字且作以下拼音获取...C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','W','X','Y','Z') INTO tmp_cc; #获得汉字拼音首字符

    3.6K30

    Python列表中如何按照先字母升序,再数字升序进行混合排序

    一、前言 前几天在Python白银交流群有个叫【猫药师Kelly】的粉丝问了一个Python列表排序的问题,如下图所示。 二、实现过程 这里【猫药师Kelly】自己给了一个代码,如下图所示。...看上去确实有点复杂,但是思路是一步一步的,先分别提取字幕和数字,然后使用sorted()内置函数排序,关于这个sorted()内置函数的用法,之前有写过文章,可以戳这里:Python基础中的sort()...这个float(x[1:])加进来作用是按照第二顺位的排序依据。 三、总结 大家好,我是皮皮。...这篇文章主要分享了Python列表中如何按照先字母升序,再数字升序进行混合排序,文中针对该问题给出了具体的解析和代码演示,帮助粉丝顺利解决了问题。

    3.7K10

    mysql中的field()排序函数

    field() 函数:是将查询的结果集按照指定顺序排序 格式: FIELD(str,str1,str2,str3,...)...什么时候用: 想让某几个特定的字段值放在最后,用field()函数 解释: str是字段名字,字符串str1,str2,str3等等,是该字段的值 函数意思: 匹配到str1,将其放到结果集最后返回 详细解析...: 当字段值没有匹配到str1,str2或者str3的时候,按照正常排序;当匹配到这些的时候,会把没有匹配的值放到最前面,匹配到的放到后边,并且以写的顺序排序返回结果集。...场景: 数据库有字段model,代表手机型号,值有很多,和更多型号;现在根据model字段排序,查询结果集中,’‘更多型号’’ 必须放最后。...ORDER BY FIELD(model,'更多型号') sql中排序比较常见,我们常用的排序语句是这两个。

    1.3K50

    Excel应用实践18:按照指定工作表中的数据顺序对另一工作表中的数据排序

    学习Excel技术,关注微信公众号: excelperfect 我从数据库中导入数据到工作表,本来数据库中的数据顺序是排好了的,然而导入工作表中后数据顺序变乱了。...如果在工作表中使用复制粘贴来重新恢复固定的顺序,将会花费大量的时间,能否使用VBA快速完成排序,详情如下。 下图1中“固定顺序”工作表为数据本来应该的顺序: ?...图1 图2中“整理前”工作表为导入数据后的顺序: ? 图2 可以看出,“整理前”工作表中的列顺序被打乱了,我们需要根据“固定顺序”工作表中列的顺序将“整理前”工作表恢复排序。...工作表列标题 For i = 1 To lngLastFixed SearchHeader =wksYesOrder.Cells(1, i) '在"整理前"工作表中查找

    6.1K20

    MySQL 中的数据排序是怎么实现的?

    在 MySQL 中,数据排序是通过 ORDER BY 子句来实现的。ORDER BY 子句可以用于对查询结果进行排序,可以根据一个或多个列来进行排序,并且可以指定每个列的排序方向(升序或降序)。...单列排序SELECT * FROM employeesORDER BY salary ASC;这条查询语句将返回 employees 表中的所有记录,并按 salary 列升序排序。...性能考虑索引:如果排序的列上有索引,MySQL 可以利用索引来加速排序操作。例如,如果 salary 列上有索引,上述查询可能会更快。...文件排序:如果无法使用索引,MySQL 可能会使用文件排序(FileSort),这通常比使用索引慢得多。内存:MySQL 会在内存中进行排序操作,如果数据量很大,可能会导致性能下降。...使用覆盖索引:确保查询的所有列都在索引中,这样 MySQL 可以直接从索引中获取数据,而不需要回表查询。

    1K00

    MYSQL中的COLLATE是什么?

    对于mysql中那些字符类型的列,如VARCHAR,CHAR,TEXT类型的列,都需要有一个COLLATE类型来告知mysql如何对该列进行排序和比较。...这里顺便讲个题外话,mysql中有utf8和utf8mb4两种编码,在mysql中请大家忘记utf8,永远使用utf8mb4。...[mysql中和utf8mb4相关的所有COLLATE] 图中我们能看到很多国家的语言自己的排序规则。...在mysql8.0以下版本中,你如果什么都不修改,默认的CHARSET是Latin1,默认的COLLATE是latin1_swedish_ci。...以上就是关于mysql的COLLATE相关知识。不过,在系统设计中,我们还是要尽量避免让系统严重依赖中文字段的排序结果,在mysql的查询中也应该尽量避免使用中文做查询条件。

    21.8K243

    【数据库】MySQL进阶七、limit用法& varchar类型排序

    【数据库】MySQL进阶七、 limit用法与varchar排序 limit用法 limit是mysql的语法 select * from table limit m,n 其中m是指记录开始的index...MySQL中怎么对varchar类型排序问题 asc 升级 desc降序 在mysql默认order by 只对数字与日期类型可以排序,但对于varchar字符型类型排序好像没有用了,下面我来给各位同学介绍...今天在对国家电话号码表进行排序的时候发现了一个有趣的问题,我想让isdcode字段按照由小到大的顺序排序,于是乎我是这样写的 SELECT * FROM gb_country_isdcode ORDER...可是为什么+0就好了呢?原来,+0后就转换INT类型排序了。这样就可以按照大小排序了。 如果不是电话而是汉字怎么办,汉字排序我们只要进行简单转换即可排序了。...在mysql中使用order by对存储了中文信息的字段,默认出来的结果并不是按汉字拼音的顺序来排序,要想按汉字的拼音来排序,需要把数据库的字符集设置为UTF8,然后在order by 时候强制把该字段信息转换成

    2K60

    Java开发中不使用MySQL的List排序魔法

    在Java开发的世界里,MySQL一直是数据存储和查询的得力助手。然而,有时候我们可能会遇到一些场景,比如需要对内存中的数据进行快速排序,或者在一些轻量级应用中,完全不依赖数据库来处理数据。...那么,如何在不使用MySQL的情况下,对Java中的List进行从简单到复杂的排序呢?今天,我将带你走进这个神奇的领域,分享一些实用的解决方案、实际案例分析以及技术设计的智慧。...一、为什么要在Java中不使用MySQL进行排序?在开始之前,我们先来探讨一下为什么会有这样的需求。...然而,如果数据量非常大,可以考虑使用其他排序算法,如快速排序或堆排序。3. 避免在排序中频繁调用复杂方法在排序过程中,Comparator 中的 compare 方法会被频繁调用。...用户体验:在用户界面中,提供多种排序选项,让用户可以根据自己的需求选择排序方式。九、总结与展望在Java开发中,不使用MySQL进行List排序是一种常见且高效的方式。

    55810

    怎样在 SQL 中对一个包含销售数据的表按照销售额进行降序排序?

    在当今数字化商业的浪潮中,数据就是企业的宝贵资产。对于销售数据的有效管理和分析,能够为企业的决策提供关键的支持。而在 SQL 中,对销售数据按照销售额进行降序排序,是一项基础但极其重要的操作。...如果能够快速、准确地按照销售额从高到低进行排序,那么您就能一眼看出哪些产品是销售的热门,哪些可能需要进一步的营销策略调整。 首先,让我们来了解一下基本的 SQL 语法。...在实际应用中,可能会有更复杂的需求。...,比如先按照销售额降序排序,如果销售额相同,再按照销售量升序排序: sql 复制 SELECT * FROM sales_data ORDER BY sales_amount DESC, sales_quantity...无论是为了制定销售策略、评估市场表现,还是优化库存管理,都能从有序的数据中获取有价值的信息。 总之,SQL 中的排序操作虽然看似简单,但却蕴含着巨大的能量。

    4.9K10

    SQL优化案例分享 | 为什么MySQL 5.7以前GROUP BY会排序?如何避免隐式排序?

    你是否曾经困惑:为什么相同的GROUP BY语句在不同MySQL版本上性能差异巨大?今天我们揭秘MySQL隐式排序的"黑历史",助你轻松优化查询性能!...一、隐藏的性能杀手 在MySQL 5.7之前的版本中,存在一个"不为人知"的特性:当你执行GROUP BY查询时,即使没有明确要求排序,结果也会默认按照GROUP BY字段排序。...BY NULL; 在这个查询中,GROUP BY仅进行分组而不会自动排序,ORDER BY NULL明确告诉MySQL不进行排序操作。...使用专业SQL优化工具 使用PawSQL等专用SQL优化工具,它可以从复杂的SQL文本中识别隐藏排序的隐患,并根据数据库的类型和版本,自动决定是否添加order by null....六、总结 在MySQL 5.7及之前的版本中,GROUP BY操作会自动进行排序,这种行为是因为查询优化器的设计问题。默认排序虽然在某些场景下符合预期,但在处理大数据集时,隐式排序会引起性能瓶颈。

    55810
    领券