2016-09-28 51 views
0

替換值我有以下的數據庫列,它的值:SQL - 在SELECT子句

Column 
#1 747, 757, 767 
#2 747, 757 
#3 767, 777 
... 

我想查詢該表與SQL SELECT和輸出應該是這樣的:

#1 Tree, Beer, Car 
#2 Tree, Beer 
#3 Car, House 

所以我需要用文字翻譯數字代碼。我如何在select子句中實現這一點?

謝謝!

+0

你有Tree','Beer'等等等等的'相關的值的另一個表用數字 – RiggsFolly

+0

@Torben用樹,啤酒,汽車等創建另一個表,並將該表的id或任何列值作爲外鍵添加到主表中,然後在select查詢中進行連接。 –

+0

這是一個包含逗號分隔列表中的數字的表嗎?如果是的話**糟糕的設計**我建議你重新設計數據庫 – RiggsFolly

回答

1

你可以嘗試

CREATE TEMPORARY TABLE #temp (COL1 VARCHAR(50)) 


INSERT INTO #temp VALUES ('#1 747, 757, 767'), 
INSERT INTO #temp VALUES ('#2 747, 757'), 
INSERT INTO #temp VALUES ('#3 767, 777') 


SELECT replace(
replace(
replace(
replace(COL1, '747', 'Tree'), 
'757', 'Beer'), 
'777', 'House'), 
'767', 'Car') required_value 
FROM #temp 

我應該提到表的設計可以通過將這些值在不同的列加以改進。

如果你打算撤消你目前的設計並且有另外一個,你需要測試,但我想這不是問題的目的。 ;)

0

這將是非常糟糕的硬編碼這樣的,但現在這是唯一的方法在我的腦海

Select 
COLUMN1, 
CASE COLUMN2 WHEN 747 THEN 'TREE' WHEN 757 THEN 'BEER' WHEN 767 THEN 'CAR' WHEN 777 THEN 'HOUSE' END AS COLUMN2, 
CASE COLUMN3 WHEN 747 THEN 'TREE' WHEN 757 THEN 'BEER' WHEN 767 THEN 'CAR' WHEN 777 THEN 'HOUSE' END AS COLUMN3, 
CASE COLUMN4 WHEN 747 THEN 'TREE' WHEN 757 THEN 'BEER' WHEN 767 THEN 'CAR' WHEN 777 THEN 'HOUSE' END AS COLUMN4 
FROM YOURTABLE