2015-09-10 55 views
2

我想英尺和英寸轉換爲釐米格式MySQL的高度轉換格式釐米

格式在我的數據庫是:

4'6" (4英尺6英寸)

公式轉換成釐米

4*30.48 = 121.92 (convert feet to centimeters = multiply by 30.48) 
6*2.54 = 15.24 (convert inches to centimeters = multiply by 2.54) 
So Result = 121.92 + 15.24 = 137.16 cm 

例如:

實際的表:英寸

SELECT * FROM inches 

id height 
1 4'6" 
2 4'7" 
3 5'8" 
4 5'9" 

我希望下面的結果釐米,當我做SQL查詢

id height 
1 137.16 
2 139.7 
3 172.72 
4 175.26 

感謝提前:)

+2

你爲什麼不先將其轉換爲英寸首先,然後乘以2.54?即'(4×12 + 6)×2.54'? – Raptor

+0

是的,沒關係。如何查詢?請... – Asik

+1

類似的問題:http://stackoverflow.com/questions/24837742/convert-inches-to-cm-in-text-in-mysql。簡而言之,您應該在應用程序級別執行此操作,例如通過PHP腳本。 – Raptor

回答

2

應用程序端的過程中會更好,

然而,

SELECT 
      (CAST(SUBSTR(height,1, LOCATE("'",height)-1) AS UNSIGNED) * 30.48) + 
      (CAST(SUBSTR(height, LOCATE("'",height)+1) AS UNSIGNED) * 2.54) AS cm 
    FROM 
      inches; 
+0

@Robby,不會吧,我檢查過兩次,請在你身邊試試! – Hytool

+0

謝謝你的答案和+1最簡單的方法:) – Asik

+0

@Asik,不客氣!不過,我仍然希望在應用程序端執行此操作!無論如何,選擇/偏好/要求永遠是你的! – Hytool

3

可能更容易做應用級別,但如果你真的必須這樣做,你可以用SQL這樣做,使用SUBSTRINSTR函數,以及一些基本的數學運算:

SET @height = '4''6"'; 
SELECT 
    SUBSTR(@height, 1, INSTR(@height, '''') - 1) * 12 * 2.54 + 
    SUBSTR(@height, INSTR(@height, '''') + 1, INSTR(@height, '"') - INSTR(@height, '''') - 1) * 2.54; 

-- yields 137.16 

或者應用到你的表結構:

SELECT id, 
    SUBSTR(height, 1, INSTR(height, '''') - 1) * 12 * 2.54 + 
    SUBSTR(height, INSTR(height, '''') + 1, INSTR(height, '"') - INSTR(height, '''') - 1) * 2.54 AS height 
FROM inches; 
+1

這是[sqlFiddle](http://sqlfiddle.com/#!9/feced/3) –

+1

@Robby,真是太棒了!謝謝你的回答:) – Asik

+0

@Juan,謝謝你的小提琴:) – Asik

相關問題