在今天开发时碰到了这样的一个问题:
在数据库表中有一个对varchar类型的数值进行desc排序,很简单的要求吧。可是奇怪的现象出现了。。表中的数据不会根据从高到底进行排序了。。瞬间有点泪奔的感觉呀。。还好经过高手指点啊。所以想和大家分享一下。。希望下一个mysql初学者以后不要像我一样了啊。。还是废话少说,看代码吧。。
如:有一张T_TESTDEMO表,其有两个DEMOID,DEMONAME字段,其中DEMOID是int类型,DEMONAME是VARCHAR类型但是存放的是认为是数值类型的数据,里面的数据如下:
1,"222222"
2,"33333333"
3,"111111"
4,"2222"
5,"99999"
6,"8888"
7,"11111"
8,"777"
现在有个要求是根据DEMONAME里面的数据从大到小排序,一看很简单的嘛,于是很得意的写下以下SQL:
SELECT * FROM T_TESTDEMO ORDER BY DEMONAME DESC
可是排序的结果是:
5,"99999"
6,"8888"
8,"777"
2,"33333333"
1,"222222"
4,"2222"
3,"111111"
7,"11111"
完全不是想要的那种根据大小排序的,瞬间有点石化啊。所以下面重点来了:
假如使用下面的sql,会是怎样呢?
SELECT * FROM T_TESTDEMO ORDER BY (DEMONAME + 0) DESC ;
排序结果为:
2,"33333333"
1,"222222"
3,"111111"
5,"99999"
7,"11111"
6,"8888"
4,"2222"
8,"777"
呀。好像是想要的那种数据比较大小的了呀。。可是为什么+0就好了呢?
原来,+0后就转换INT类型排序了。这样就可以按照大小排序了。。
写到这呢。我就不继续废话连篇了。。不过还是希望对MySQL初学者有那么一点帮助吧。。
分享到:
相关推荐
在MySQL中,`VARCHAR`是一种用于存储可变长度字符串的数据类型,它的长度设置是非常关键的,因为它直接影响到存储空间的使用效率和数据的正确性。`VARCHAR`的长度设置方法是通过在类型名后面括号内指定最大字符数,...
在MySQL数据库中,经常遇到需要将存储日期信息的VARCHAR字段转换为DATE类型的情况。这是因为VARCHAR类型通常用于存储非结构化的文本数据,而DATE类型则更适合处理日期和时间的数据。在处理涉及日期计算或比较的查询...
在比较和排序方面,MySQL中的CHAR和VARCHAR列都是基于字符集的校对规则,且所有MySQL校对规则属于PADSPACE类,这意味着在比较时不会考虑尾部空格。例如,'Monty '(带有空格)与'Monty'在MySQL中被视为相等。 总的...
本文将详细介绍MySQL中的数据类型,主要包括数值类型、字符串类型和时间日期类型。 1、数值类型 MySQL 中的数值类型分为整数类型、定点数和浮点数。 - 整数类型包括 TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER...
为了解决这个问题,我们可以使用`CAST`或`CONVERT`函数将varchar类型的值转换为int类型,然后进行排序。以下是两种不同的转换方法: 1. 使用`CAST`函数: ```sql SELECT * FROM yourtable ORDER BY CAST(yourcol ...
在MySQL数据库中,数据类型转换是非常常见的操作,特别是在处理不同类型的数据时。本篇文章将详细介绍如何将varchar类型的数据转换为int类型。varchar类型通常用于存储可变长度的字符串,而int类型则用于存储整数。...
备注:c8=char(8), s8=varchar(8), i8=(bigint), c4=char(4), s4=varchar(4), i4=char(4) 100w行无索引情况下查询: 执行[c8查询]20次, 平均耗时312.0ms 执行[s8查询]20次, 平均耗时334.3ms 执行[i8查
### MySQL常见面试问题详解 #### 1. MySQL简介与特性 ...以上内容涵盖了MySQL面试中常见的几个问题及其解答思路。希望这些知识点能够帮助你更好地理解和掌握MySQL的相关知识,并在面试中表现出色。
在MySQL数据库中,数据类型的选择对于查询性能至关重要,尤其是在涉及索引时。本文将深入探讨在将`int`类型转换为`varchar`类型后导致的慢查询问题,并提供相关优化建议。 首先,让我们看下问题的根源。在给出的表`...
在MySQL数据库中,字符类型`CHAR`和`VARCHAR`是两种常见的用于存储文本数据的字段类型,它们在存储方式和空间效率上有着显著的区别。 首先,`CHAR`是一种固定长度的字符类型。这意味着,无论你存储的数据实际长度是...
7.3.6.2 DATETIME,DATE和TIMESTAMP类型 7.3.6.3 TIME类型 7.3.6.4 YEAR类型 7.3.7 字符串类型 7.3.7.1 CHAR和VARCHAR类型 7.3.7.2 BLOB和TEXT类型 7.3.7.3 ENUM类型 7.3.7.4...
MySQL中数据类型的选择对于数据库设计至关重要,它直接关系到数据存储的有效性和查询的效率。MySQL支持多种数据类型,可以分为几大类:数值型、日期时间型、字符型以及其他数据类型等。 数值型数据类型主要包括:...
在使用MySQL的过程中,中文乱码问题是常见的问题之一,尤其是在数据库初始设置不当时,更容易出现此类问题。本文将详细介绍如何彻底解决MySQL中的中文乱码问题。 #### 一、理解中文乱码的原因 中文乱码通常是由...
在Java Web开发过程中,MySQL数据库中的中文编码问题是非常常见的技术难题之一。如果处理不当,可能会导致中文显示乱码、数据插入失败等问题。本文将深入探讨MySQL中文编码的相关设置,并提供一种有效的解决方案。 ...
o 5.1 MySQL对ANSI SQL92 的扩充 o 5.2 以ANSI模式运行 MySQL o 5.3 MySQL相比ANSI SQL92的差别 o 5.4 MySQL 缺乏的功能 + 5.4.1 子选择(Sub-selects) + 5.4.2 SELECT INTO TABLE + 5.4.3 事务(Transactions...
在MySQL数据库中,CHAR和VARCHAR是两种常用的字符串数据类型,它们在存储和处理方式上有着显著的区别,这对于数据库设计和优化至关重要。 首先,CHAR是一种固定长度的字符串类型。这意味着无论你存储的实际数据有多...
- MySQL 8.0包含各种数据类型,如INT、VARCHAR、DATE、TIMESTAMP等,以及大量的内置函数,用于数学计算、字符串处理、日期和时间操作等。 MySQL 8.0中文参考手册包含了所有这些特性和更多内容的详细说明,包括安装...
在MySQL中,处理字符串中的数字排序可能会遇到一些特殊的情况,因为MySQL默认会按照字符串的字典顺序进行排序,而不是按照数字的大小。当字段的定义是字符串类型(如VARCHAR),但实际存储的是数字时,如果不做特殊...