以升序(ASC)显示表格*

时间:2013-10-21 06:18:37

标签: mysql sql database

我想从下面的sql语句中以升序显示我的cnumber,即1111111,2222,33333,4444等。

   SELECT 
      * 
   FROM 
       BIBLEBOOK 
   INNER JOIN 
       CHAPTER ON (BIBLEBOOK.BIBLEBOOK_Id=CHAPTER.BIBLEBOOK_Id) 
   INNER JOIN 
       VERS ON(CHAPTER.CHAPTER_Id=VERS.CHAPTER_Id) 
   WHERE 
       BIBLEBOOK.bnumber='2' 
   ORDER BY
       cnumber ASC;*

但是当我运行sql结果时

enter image description here

... 111111 10101010 .... 111111 ... 12121212 .... 131313 .... 22222222

如何显示结果,如1..2..3..4..5..6 ..

3 个答案:

答案 0 :(得分:1)

将文本数据类型转换为数字类型时,可以强制进行数字排序。使用显式或隐式转换

 ORDER BY cnumber * 1 ASC

答案 1 :(得分:1)

您没有包含任何用于描述表格的DDL,但似乎您的cnumber被定义为VARCHAR列,因此按字典顺序排序。 如果它确实只包含NUMERIC数据并且总是这样使用,那么更改列的数据类型可能是个好主意。

如果你不能这样做,你总是可以在查询中明确地将它强制转换为数字排序。

SELECT * 
FROM BIBLEBOOK 
INNER JOIN CHAPTER ON (BIBLEBOOK.BIBLEBOOK_Id=CHAPTER.BIBLEBOOK_Id) 
INNER JOIN VERS ON(CHAPTER.CHAPTER_Id=VERS.CHAPTER_Id) 
WHERE BIBLEBOOK.bnumber='2' 
ORDER BY CAST (cnumber AS NUMERIC) ASC;

答案 2 :(得分:0)

看起来您的cnumber设置为文字而非数字。尝试使用CONVERT函数强制使用标准数字比较而不是文本1来进行排序:

ORDER BY
    CONVERT(cnumber, INTEGER) ASC;*

但我会从考虑您的列数据类型更改开始。为什么在第一个处理数字数据时将其设置为文本?