首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >给我的数字下命令--nat排序();不起作用

给我的数字下命令--nat排序();不起作用
EN

Stack Overflow用户
提问于 2016-09-01 14:30:05
回答 1查看 43关注 0票数 0

在从数据库中加载内容时,我遇到了问题。在我的数据库中,我有一个表,它保存着我的图片库图像。在我的行中,标题被设置为文本,因为我想使用的值是: hashtag,然后是像这个#1 #2这样的数字.诸若此类。

所以我就这样加载我的内容..。

代码语言:javascript
运行
复制
$sql = "SELECT * FROM gallery ORDER BY title DESC LIMIT $start_from, $per_page";
$run = mysqli_query($conn,$sql);

        while ($rows = mysqli_fetch_assoc($run))
        {  

            echo'....... ';}

但问题是,当我按标题订购时,我得到的是这些数字

哈斯塔格90

哈斯塔格9-2

哈斯塔格9-1

所以,我使用的是按标题排序的DESC,为什么我的最大数字(hashtag 706)不是第一个呢?

我试着使用natsort();,但它没有工作,因为它保持相同的东西。

我怎么解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-01 14:39:33

9-2不是一个数字。它是一个字符串,因此这意味着您的title字段是文本类型(char,varchar),并且适用字符串排序规则。这意味着字符串是“逐字符”比较的,而不是“逐个数字”。

代码语言:javascript
运行
复制
9-2
7
abc

comparison a) "9" > "7" -> true
comparison b) "-" > "" -> true
comparison c) "2" > "" -> true

同样:

代码语言:javascript
运行
复制
9-2
706
abc

comparison a) "9" > "7" -> true   (ascii 57 > ascii 55)
comparison b) "-" > "0" -> false  (ascii 45 > ascii 48)
comparison c) not necessary, 9-2 is already "bigger" than 706

因此,9-2是一个比706更大的字符串,因为9>7总是正确的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39274323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档