我知道如何将nvarchar转换为十进制(18,4)Cast方法。我的表行数为80000.我的查询在下面运行完美...
SELECT top 80000 id, Cast(MH as decimal(18,4)) as MH
FROM TaskRelations WHERE MH is not null
BUT;
但是下面的选择查询不是WORK!如果写在下面:
SELECT id, Cast(MH as decimal(18,4)) as MH
FROM TaskRelations WHERE MH is not null
错误:将数据类型nvarchar转换为数字时出错。
答案 0 :(得分:7)
第80,000行后,MH
字段中包含非数字数据。
你可以使用ISNUMERIC
function,但它是出了名的错误,并会根据你的数据给你很多误报。
答案 1 :(得分:1)
问题通常是确实MH列中的某些nvarchars不能转换为十进制。
您可以尝试直观地检查数据,但由于您有超过80k的记录,这可能是不可行的。尝试以其他方式检查数据 - 您可以使用isNumeric
,或在列的第一个(或最后一个)三个字符上使用group by
来查找错误数据。
答案 2 :(得分:0)
基本上,您收到的错误是由于超过前80000条记录的某些记录无法转换为小数。检查所有行的数据> 80000
答案 3 :(得分:0)
试试这个:
SELECT max(MH) as max_mh, min(mh) as min_mh
FROM TaskRelations
WHERE MH is not null
非数字值应低于或高于数字值。