Heim > Datenbank > MySQL-Tutorial > MySQL中对varchar类型排序问题

MySQL中对varchar类型排序问题

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-07 15:09:37
Original
1083 Leute haben es durchsucht

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 在今天开发时碰到了这样的一个问题: 在数据库表中有一个对varchar类型的数值进行desc排序,很简单的要求吧。可是奇怪的现象出现了表中的数据不会根据从高到底进行排序了瞬间有点泪奔的感觉呀还好经

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

  在今天开发时碰到了这样的一个问题:

  在数据库表中有一个对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中对varchar类型排序问题

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Aktuelle Ausgaben
So ändern Sie MySQL in MySQL
Aus 1970-01-01 08:00:00
0
0
0
MySQL-Startfehler unter Centos
Aus 1970-01-01 08:00:00
0
0
0
MySQL stoppt den Prozess
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage