[英]how to cast nvarchar to decimal?
我知道如何將nvarchar轉換為十進制(18,4)強制轉換方法。 我的表格行數為80000。我的查詢在下面完美運行...
SELECT top 80000 id, Cast(MH as decimal(18,4)) as MH
FROM TaskRelations WHERE MH is not null
但;
但下面選擇查詢不起作用! 如果寫在下面:
SELECT id, Cast(MH as decimal(18,4)) as MH
FROM TaskRelations WHERE MH is not null
錯誤:將數據類型nvarchar轉換為數字時出錯。
您的MH
字段中的第80,000行之后有非數字數據。
您可以使用ISNUMERIC
函數,但是它臭名昭著的錯誤,將根據您的數據為您帶來大量誤報。
問題通常是,實際上MH列中的某些nvarchar不能轉換為十進制。
您可以嘗試以視覺方式檢查數據,但是由於記錄數超過80k,這可能不可行。 嘗試以其他方式檢查數據-您可以使用isNumeric
,或在列的前(或后)三個字符處使用group by
來查找錯誤的數據。
基本上,您收到的錯誤是由於以下事實造成的:超過最高80000條記錄的某些記錄無法轉換為十進制。 檢查所有> 80000的行上的數據
嘗試這個:
SELECT max(MH) as max_mh, min(mh) as min_mh
FROM TaskRelations
WHERE MH is not null
非數字值應小於或大於數字值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.