按字符串顺序排序SQL

时间:2015-08-30 05:51:18

标签: mysql sql

在我的表中,我有两个文件,一个是 id 另一个是 strNum 。我想订购 strNum ,如

One
Two
Three

我的表格数据

    id  strNum      
------  ------------
     1  Two         
     2  One         
     3  Five        
     4  Nine  

我希望在没有任何额外字段添加的情况下获得输出。我怎么能像

一样订购
One
Two
Three
Four
Five

3 个答案:

答案 0 :(得分:2)

您可以使用Case

select strNum
from A
order by case when strNum='one' then 1
                    when strNum='two' then 2
                    when strNum='three' then 3
                    when strNum='four' then 4
                    when strNum='five' then 5
                    when strNum='six' then 6
                    when strNum='seven' then 7
                    when strNum='eight' then 8
                    when strNum='nine' then 9
                    when strNum='ten' then 10  end

您没有提到您正在使用的数据库。这是PostgreSQL版本。 见SQLFiddle

答案 1 :(得分:1)

您可以使用此查询:

SELECT strNum FROM your_table
ORDER BY FIELD(strNum,'One','Two','Three','Four','Five','Six','Seven','Eight','Nine','Ten') ASC

答案 2 :(得分:0)

结帐http://sqlfiddle.com/#!4/6a54c/1

创建一个包含从数字字符串到整数值

的所有映射的表

<强> TABLE_MAPING

Value   strNum
------  ------------
     1  One         
     2  Two         
     3  Three        
     4  Four 
.....................

现在使用适当的连接

创建您的查询
SELECT m.strNum FROM my_table m 
  JOIN table_mapping as maping on m.strNum = maping.strNum
  ORDER BY maping.value