我有以下資料需要轉換為簡單的小數。目前,它是 varchar 格式。資料位于名為 Commission% 的列中
| 傭金%(目前為 Varchar) | 傭金% V2(需為小數) |
|---|---|
| 87.00000% | .87 |
| 95.00000% | .95 |
我嘗試了以下方法:
CAST(CAST(CONVERT(FLOAT,REPLACE([Commission %], ''%'', '''')) / 100 AS DECIMAL(10,6)) as DECIMAL(10,6))
但是我收到以下錯誤訊息Error convert data type varchar to numeric。前幾天我可以使用類似的東西,但當時的尾隨零較少。
uj5u.com熱心網友回復:
這幾乎可以肯定是由于錯誤的資料,當您將數字存盤為字串時,這是您應該預料到的。以下是您識別它們的方法:
SELECT [KeyColumn], [Commission%]
FROM dbo.BadColumnNamesWow
WHERE [Commission%] IS NOT NULL
AND TRY_CONVERT(decimal(20,10), REPLACE([Commission%], '%', '')) IS NULL;
由于您現在說還有其他模式,因此僅執行此操作以識別所有不良資料可能是有意義的:
SELECT * FROM dbo.BadColumnNamesWow
WHERE [Commission%] IS NOT NULL
AND PATINDEX('%[^0-9.]%', [Commission%]) > 0;
然后把它清理干凈。這應該是為什么您從不將數值存盤在字串列中的一個教訓。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/467820.html
下一篇:在2個字串之間查找文本
