请教一下数据库字段是varchar,我们做排序的时候为啥999比1111大
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教一下数据库字段是varchar,我们做排序的时候为啥999比1111大相关的知识,希望对你有一定的参考价值。
跟mysql字符集有关的有:1. 数据库的的字符集
2. 文本字段( varchar , text ,char ) 的字符集
你指的是哪个呢?
以下例子以utf8为字符集(注意是utf8 不是 utf-8 )
建库时指定字符集: create database XXXX charset utf8
一旦在建库时指定了字符集,在建表时就可以不用指定字符集了,它会默认继承数据库的字符集。
如果建表时还想指定字符集:create table XXXX ( xxxxxxx ) type=MyISAM default charset utf8
或
create table XXXX ( aa varchar(8) charset utf8, bb char(4) charset utf8) type=MyISAM default charset utf8;
一旦设置了utf8为字符集,在读取时,特别是用作网页作为输出 和 从网页接受数据时,要注意:
1. 请将网页的编码设置为 utf-8 (请注意是 utf-8 不是 utf8 )
2. 在进行 数据库操作 之前请先执行一下SQL: set names utf8 , 然后再执行其它SQL语句
上面的思想是:请尽量保持所有的操作都用同一种编码。 参考技术A 你这个明显是按照id排序的,不是按照a或者b排序的。 参考技术B ‘9’的ASCII码大于 '1'呀本回答被提问者采纳
mysql varchar排序
今天遇到个问题,mysql order by 字段 ,如果字段是varchar形式,但是里面存的是数字的话,排序会认为他是string类型排序,如下:
1
11
12
13
14
..
19
2
20
21
..
当数字位数多的时候,排序更乱。
解决访问就是
order by (字段+0) desc
这样,字段会被解析成数字的形式,所以可以正常的排序
以上是关于请教一下数据库字段是varchar,我们做排序的时候为啥999比1111大的主要内容,如果未能解决你的问题,请参考以下文章