Mysql相关知识总结-持续更新~~~

Mysql相关知识总结-持续更新~~~2019-12-11对varchar类型排序问题的解决 在mysql默认order by 只对数字与日期类型可以排序,但对于varchar字符型类型排序好像没有用了,下面我来给各位同学介绍varcha

  

 

2019-12-11对varchar类型排序问题的解决

在mysql默认order by 只对数字与日期类型可以排序,但对于varchar字符型类型排序好像没有用了,下面我来给各位同学介绍varchar类型排序问题如何解决。

现象描述:  

  

select * from resultgroup where upUser = "kkk" order by patientId desc

代码100分

 

 

 

  Mysql相关知识总结-持续更新~~~

  为什么会出现这种现象呢?就是因为 patientIdvarchar类型的 而order by 排序只针对数字 跟日期排序的。所以会出现上述现象。

解决办法:

  1.把varchar类型字段加上0变成int类型就ok。

  

代码100分select * from resultgroup where upUser = "kkk" order by patientId+0 desc

  Mysql相关知识总结-持续更新~~~

  2.用mysql自带的方法  把varchar强转。CAST/CONVERT

  mysql为我们提供了两个类型转换函数:CAST和CONVERT,现成的东西我们怎能放过?

   CAST() 和CONVERT() 函数可用来获取一个类型的值,并产生另一个类型的值。
  这个类型 可以是以下值其中的 一个:
  BINARY[(N)]
  CHAR[(N)]
  DATE
  DATETIME
  DECIMAL
  SIGNED [INTEGER]
  TIME
  UNSIGNED [INTEGER]

所以我们可以用CAST解决问题:

select * from resultgroup where upUser = "kkk" order by cast(patientId as signed ) desc

Mysql相关知识总结-持续更新~~~

也可以使用CONVERT来搞定此问题:

代码100分select * from resultgroup where upUser = "kkk" order by convert(patientId , signed ) desc

Mysql相关知识总结-持续更新~~~

 

 3.如果不是电话而是汉字怎么办,汉字排序我们只要进行简单转换即可排序了

在mysql中使用order by对存储了中文信息的字段,默认出来的结果并不是按汉字拼音的顺序来排序,要想按汉字的拼音来排序,需要把数据库的字符集设置为UTF8,然后在order by 时候强制把该字段信息转换成GBK,这样出来的结果就是按拼音顺序排序的。例如:

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

结论是:查询的时候,通过convert函数,把查询出来的数据使用的字符集gb2312编码就可以了,然后使用convert之后的中文排序。但是如果真的去把表中字段的字符集改成gb2312,又会涉及到很多编码的问题,页面传值啊,从数据库中存取啊,很麻烦。只要在查询的时候,指定一下字符集,并不是真的把物理字段改成gb2312,很简单。

 到这里对varchar类型排序问题就解决了。。。

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10534.html

(0)
上一篇 2022-12-26
下一篇 2022-12-26

相关推荐

  • python默认工作空间(python设置工作空间)

    python默认工作空间(python设置工作空间)正儿八经开始使用的第一个编辑器就是VS Code,所以基本没怎么用过Sublime,比较是无从谈起,不过VS Code用起来真是顺手啊。配置好的话,直接在VS Code里面进行Python开发、调试,完全不是问题。

    2023-11-03
    159
  • Python字典的快速值检索方法

    Python字典的快速值检索方法Python字典是一种可变容器,可以存储任意类型的值。每个值都与唯一的键相关联,通过该键可以快速访问该值。Python字典使用哈希表实现,因此,字典中的元素是无序的,但是可以通过键快速访问值。

    2024-02-16
    84
  • Python实现主函数示例

    Python实现主函数示例Python是一门流行且功能强大的解释型编程语言,被广泛用于开发Web应用、数据分析、人工智能、机器学习等领域。Python是一门高级语言,能够让编程变得简单易懂。主函数是Python程序的一个重要组成部分,本文将对Python实现主函数示例进行详细阐述。

    2023-12-17
    93
  • Python实现字符串比较

    Python实现字符串比较在日常开发中,字符串比较是一个很常见的操作。Python内置了很多用于字符串比较的方法和函数,本文将从多个方面对Python实现字符串比较做详细的阐述。

    2024-06-03
    49
  • MyCat教程五:实现分库分表[通俗易懂]

    MyCat教程五:实现分库分表[通俗易懂]  本文我们来介绍下MyCat的分库分表操作 分库分表 一、分片规则介绍   在rule.xml中定义了各种myCat支持的分片规则。 取模mod-long 自然月分片 sharding-by-mo…

    2022-12-16
    144
  • MariaDB部署「建议收藏」

    MariaDB部署「建议收藏」环境 系统:CentOS Linux release 7.8.2003 (Core) 内核:3.10.0-693.el7.x86_64 1.安装启动MariaDB 安装mariadb 和 maria…

    2023-03-17
    172
  • 数据库的安全很复杂往往需要考虑多种安全策略_数据库是最简单也是最复杂的吗

    数据库的安全很复杂往往需要考虑多种安全策略_数据库是最简单也是最复杂的吗一、什么是触发器 数据库触发器是一个与表相关联的,存储的PL/SQL 语句。每当一个特定的数据操作语句(insert update delete)在指定的表上发出时,Oracle自动执行触发器中定义…

    2023-02-19
    153
  • Docker下安装MySQL[亲测有效]

    Docker下安装MySQL[亲测有效]1:查看MySQL可用版本镜像 docker search mysql 2:拉取MySQL镜像 docker pull mysql:latest(如果要安装指定版本将latest换成版本号即可,此处安

    2023-04-14
    152

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注