2016-02-29 184 views
-1

我有一個高度存儲在以下格式的表格:例如:5'6「 ,4'10.5」,5'3.75「我如何將它們轉換爲僅英寸SQL服務器?英尺英寸的高度轉換爲英寸

+2

到目前爲止,你已經嘗試過什麼? –

+0

什麼都沒有。我知道我需要使用演員,並用',。,和'分開,或者使用左右功能 – agalgay

+1

,這不是我所暗示的。我花了最後半個小時研究解決方案,我認爲這不算數。 – agalgay

回答

0

使用字符串函數像CHARINDEXLEFTRIGHT ....

查詢

select height, round((t.feet + t.feet2) * 12, 2) as inch from 
(
    select height, 
    left(height, charindex('''', height, 1) - 1) as feet, 
    cast((replace(right(height, len(height) - (charindex(' ', height, 1) - 1)), '''''', '')) as decimal(8,5)) * 0.0833333 as feet2 
    from tbl_Height 
)t; 

這可能不是一個effici解決方案。
但是,您可以使用它作爲提示。

+0

我已經成功地獲得了英尺×12的功能(參見下文 - 出於某種原因在此不會更改爲代碼格式),但我需要在「和」之間的值以便將總英寸值添加到英尺左圖(enc.height,charindex('''',enc.height)-1)* 12 – agalgay

+0

複合這是事實上該字段是varchar – agalgay

1

你應該做的第一件事就是將高度存儲爲十進制數,而不是描述以英寸爲單位的高度的varchar(x)。然後很容易得到腳和英寸(col/12 = foot,col%12 = inches)。

既然你已經搞砸了你的數據,在這裏是一種方式來獲得正確的高度

試試這個:

DECLARE @t table(height varchar(15)) 
INSERT @t values 
('5'' 6"'), 
('4'' 10.5"'), 
('5'' 3.75"') 

SELECT 
    height, 
    LEFT(height, charindex('''', height) - 1) * 12+ 
    CAST(REPLACE(STUFF(height, 1, 
    CHARINDEX(' ', height), ''), '"', '') as decimal(5,2)) inchheight 
FROM @t 

結果

height inchheight 
5' 6"  66.00 
4' 10.5" 58.50 
5' 3.75" 63.75 
相關問題