我有具有將稍後在導入過程被轉化成decimal(9,3)
數據的列[Cash] nvarchar(50)
,一些數據與正常外觀數值如134.630,-80.662和一致324.372。偶爾我有多個點的數字值的數據,如1.324.372 and -2.134.630.
有沒有辦法去除這個額外的點。轉換爲有效的十進制數據類型
1
A
回答
1
declare @yourtable table(cash varchar(20))
insert @yourtable values('1.324.372')
insert @yourtable values('-2.134.630')
insert @yourtable values('1.234.567.89')
舊代碼:
select reverse(replace(replace(stuff(reverse(cash), charindex(
'.', reverse(cash)), 1, ','), '.', ''), ',', '.'))
from @yourtable
稍微升級代碼(結果是一樣的):
select reverse(stuff(reverse(replace(cash, '.', '')),
charindex('.', reverse(cash)), 1, '.'))
from @yourtable
結果:
1324.372
-2134.630
1234567.89
+0
輝煌的成果。感謝您的幫助 –
1
你可以;
select case when len(cash) - len(replace(cash, '.', '')) > 1 then
reverse(stuff(reverse(cash), charindex('.', reverse(cash)), 1, ''))
else
cash
end
from T
+0
這是我最初嘗試的 –
0
創建包含具有適當值的計算字段的視圖。
這樣你仍然可以看到varchar值和相應的十進制值。
像這樣:
選擇 [現金], 鑄造(替換([現金], '')爲十進制 '')從....
爲[CashDecimal]相關問題
- 1. 將int轉換爲十進制數據類型的過程?
- 2. 將二進制,十六進制和八進制轉換爲java數據類型
- 3. 沒有數據類型可以保存完整數字時將十進制轉換爲十六進制
- 4. 有效的算法來轉換整數爲十進制
- 5. 十進制轉換爲十六進制的轉換(Java)的
- 6. 理解類值(翻譯十六進制轉換爲十進制)
- 7. 通過十六進制轉儲將Fortran真實數據類型轉換爲Matlab
- 8. 將十進制轉換爲十六進制和十六進制
- 9. 十進制轉換爲字符串「指定的轉換無效」
- 10. 將十六進制轉換爲二進制,然後轉換爲十進制
- 11. 轉換十六進制數長整型
- 12. Python的轉換分數爲十進制
- 13. 轉換爲十進制
- 14. 雙轉換爲十進制
- 15. 轉換爲十六進制?
- 16. 轉換32位二進制數轉換爲十進制
- 17. 將數據類型nvarchar轉換爲十進制的錯誤解決方案
- 18. 將十進制數轉換爲分數
- 19. 將十六進制數轉換爲十進制格式
- 20. 在Arduino上將整數/十進制轉換爲十六進制?
- 21. 將十進制數轉換爲十六進制
- 22. 轉換十進制轉換爲浮動會發出警告意外的類型十進制
- 23. 如何轉換爲Protobuf.js中的十進制類型
- 24. 將數字的十六進制表示法轉換爲十進制數值的有效方法
- 25. 十六進制轉換爲二進制
- 26. 將二進制轉換爲十進制
- 27. 二進制轉換爲十進制 - understaing
- 28. 從二進制轉換爲十進制
- 29. 將十進制轉換爲二進制
- 30. 從二進制轉換爲十進制
不''-2.134.630.''有在最後一個點一樣好,甚至是一個句號? –
所以,數字分組符號是'.'。什麼是小數點分隔符? –
您可以更確切地指定行爲嗎?例如,所有的值都有3位小數。正如所寫,實際上並不清楚數字*應該是...... – MatBailie