我有一个粘贴了值的表,但它们最初以varchar开头。我需要将它们转换为数字,所以我做了
convert(decimal(10,3), cw.col7)
但这会回归Error 8114: Error converting data type varchar to numeric
。我提出这个问题的原因是因为它没有为类似的数据集提供此错误。使用convert()
或decimal()
时,有时会出现奇怪的异常吗?或者我应该先转换为浮动?
数据:
col7
490.440
2
934
28,108.000
33,226.000
17,347.000
1,561.000
57
0
421.350
64
1,100.000
0
0
3,584
202.432
0
3,280
672.109
1,150
0
104
411.032
18,016
40
510,648
443,934.000
18,705
322,254
301
9,217
18,075
16,100
395
706,269
418,313
7,170
40,450
2,423
1,300
2,311
94,000.000
17,463
0
228
884
557
153
13
0
0
212.878
45,000.000
152
24,400
3,675
11,750
987
23,725
268,071
4,520.835
286,000
112,912.480
9,000
1,316
1,020
215,244
123,967
6,911
1,088.750
138,644
16,924
7,848
33,017
464,463
618
72,391
9,367
507,635.950
588,087
92,890
17,266
0
1,414,547
89,080
664
101,635
1,552,992
175
356
7,000
0
0
445
507,381
24,016
469,983
0
0
147,737
3,521
88,210
18,433.000
21,775
3,607
34,774
7,642
42,680
1,255
10,880
350,409.800
19,394.520
2,476,257.400
778.480
1,670.440
9,710
24,931.600
3,381.800
2,900
18,000
4,121
3,750
62,200
952
29.935
17.795
11.940
902
36,303
1,240
1,020
617
817
620
92,648
70,925
82,924
19,162.200
1,213.720
2,871
3,180
91,600
645
607
155,100
6
840
1,395
112
6,721
3,850
40
4,032
5,912
1,040
872
56
1,856
179
答案 0 :(得分:3)
Try_Convert(money,...)
将处理逗号,而decimal(10,3)将返回null
示例强>
Select col7
,AsMoney = Try_Convert(money,col7)
,AsDecimal = Try_Convert(decimal(10, 3),col7)
from YourTable
<强>返回强>
答案 1 :(得分:1)
尝试使用强制转换并删除逗号
SELECT CAST(repalce(cw.col7,',','') AS DECIMAL(10,3))
from your_table
并且根据Jhon Cappelleti的建议,你需要更多的3位小数,所以你应该使用
SELECT CAST(repalce(cw.col7,',','') AS DECIMAL(12,4))
from your_table
答案 2 :(得分:0)
运行此查询:
select cw.col7
from cw
where try_convert(decimal(10, 3), cw.col7) is null;
这将显示未成功转换的值。 (如果cw.col7
可以是NULL
,那么请添加and cw.col7 is not null
以使输出更有意义。)