我们在工作中设计表的时间经常会遇到排序字段的类型选择,是选择字符串类型,还是选择类型呢?还是有更好的选择呢?

Mysql 数据库中表的排序字段类型要怎么选择?-风君雪科技博客

下面我们要选择用字符串做为排序字段类型

创建表跟插入数据

Mysql 数据库中表的排序字段类型要怎么选择?-风君雪科技博客

创建表

Mysql 数据库中表的排序字段类型要怎么选择?-风君雪科技博客

插入数据

查询所以记录并排序

SELECT * from test_server ORDER BY sort ASC

Mysql 数据库中表的排序字段类型要怎么选择?-风君雪科技博客

执行查询并排序

从上图我们可以看出上面的排序是有问题,正确的排序应该是 1,2,4,12 而现在是1,12,2,4被当成字符串来比较了。

要怎么解决上面的问题呢?就是要把字符串转换为数值类型

1,sort+0后再排序

Mysql 数据库中表的排序字段类型要怎么选择?-风君雪科技博客

执行查询并排序

2,使用MySQL函数CAST/CONVERT

CAST() 和CONVERT() 函数可用来获取一个类型的值,并产生另一个类型的值。

这个类型 可以是以下值其中的 一个:

BINARY[(N)]

CHAR[(N)]

DATE

DATETIME

DECIMAL

SIGNED [INTEGER]

TIME

UNSIGNED [INTEGER]

Mysql 数据库中表的排序字段类型要怎么选择?-风君雪科技博客

执行查询并排序

Mysql 数据库中表的排序字段类型要怎么选择?-风君雪科技博客

执行查询并排序

以方法虽然都可以解决这个问题,但是还我喜欢直接把sort字段设计为数值类型。一步到位,节省一些执行的时间。

修改表字段类型

Mysql 数据库中表的排序字段类型要怎么选择?-风君雪科技博客

修改表字段类型

执行查询并排序

Mysql 数据库中表的排序字段类型要怎么选择?-风君雪科技博客

执行查询语句

如果你还有什么好的方法可以在评论中留言交流谢谢大家。