2013-02-08 89 views
0

只是一個簡單的問題要問sql列格式化

在MySQL中,我將如何顯示數值作爲字符串equivilents?

所以

1 = New 
2 = Old 
3 = Cancelled 

所以,如果我不得不服用點像

SELECT object_name, object_status where object_status > 0 

該返回

object#1, 1 
object#2, 2 
object#3, 1 
object#4, 3 

但我想它顯示

object#1, New 
object#2, Old 
object#3, New 
object#4, Cancelled 

在此先感謝KS

+0

你會最好的改善你的模態並創建一個映射表。那麼你只需要加入而不是用case語句等減慢查詢速度。 – 2013-02-08 15:40:51

回答

4

可以使用CASE此,

SELECT object_name,   
     CASE object_status 
      WHEN 1 THEN 'New' 
      WHEN 2 THEN 'Old' 
      WHEN 3 THEN 'Cancelled' 
      ELSE NULL 
     END status 
where object_status > 0 

SELECT object_name,   
     CASE 
      WHEN object_status = 1 THEN 'New' 
      WHEN object_status = 2 THEN 'Old' 
      WHEN object_status = 3 THEN 'Cancelled' 
      ELSE NULL 
     END status 
where object_status > 0 
+1

你總是打敗我;) – inhan 2013-02-08 15:38:41

+0

乾杯傢伙,就是這樣! – Casper 2013-02-08 15:47:55

+0

不客氣':D' – 2013-02-08 15:57:32

2
SELECT object_name, 
case object_status when 1 then 'New' 
    when 2 then 'Old' 
    when 3 then 'Cancelled' end as status 
from myTable 
where object_status > 0 
2

您可以創建一個新的映射表和兩個表連接在一起。新表格將包含2列--的列和好名字的列。然後加入這兩個。

SELECT s.object_name, sm.StatusName 
FROM Status s 
INNER JOIN StatusMapping sm on s.object_status = sm.object_status 
WHERE s.object_status > 0 

這將允許您根據需要添加新的映射,而無需更改您的查詢。