我得在這個數據庫中存儲相同數量的這樣一個領域:從號碼提取分數存儲爲字符串
- 80 1/4
- 20 1/8
- 36 15/16
- 44 1/8
- 93 7/8
- 89 1/8
我想將它們轉換爲完整的小數,所以我可以將它們加起來。我一直試圖通過從數字中提取小數部分來實現這一點,將其轉換爲小數,然後將其加到整數中。我一直在提取分子的一些主要問題。
CASE WHEN CHARINDEX('/',Fraction) > 0 THEN RIGHT(Faction,(LEN(Fraction) - (CHARINDEX('/',Fraction)))) ELSE NULL END AS [Denominator]
我不知道這是最有效的方式做到這一點,但它似乎工作:分母一直使用提取。
我試着拉了分子使用這種方法:
CASE WHEN Charindex('/', Fraction) > 0 THEN LEFT(RIGHT(Fraction, Len(Fraction) - Charindex(' ',Fraction)), CHARINDEX('/',Fraction) - 1) ELSE NULL END AS [Numerator]
但是,這只是給我的分數本身。我不確定SQL是否在LEFT中有一個RIGHT問題,因爲它似乎沒有做任何事情,或者更可能是我的代碼搞砸了。
任何人有任何想法?
謝謝!
你想分母和分子分別或整個分數本身?如果它是後者,那麼你可以使用空格而不是正斜槓;-) – bonCodigo