簡體   English   中英

用於將nvarchar轉換為int的SQL查詢

[英]Sql query to convert nvarchar to int

我必須使用聚合函數查詢列的總量。 列數據類型是NVARCHAR(MAX)。 如何將其轉換為整數?

我試過這個:

  SELECT SUM(CAST(amount AS INT)),
         branch 
    FROM tblproducts  
   WHERE id = 4
GROUP BY branch

......但我得到了:

將nvarchar值'3600.00'轉換為數據類型int時轉換失敗。

3600.00不是整數所以CAST通過浮動優先

sum(CAST(CAST(amount AS float) AS INT))

編輯:

為何漂浮?

  • 不知道所有行的精度或比例:浮動也許是較小的邪惡
  • 對於float,空字符串將轉換為零,在十進制時失敗
  • float接受5E-02之類的東西,十進制失敗

除了gbn的答案,你還需要防范非數字案例:

sum(CASE WHEN ISNUMERIC(Amount)=1 THEN CAST(CAST(amount AS float) AS INT)END ) 

SELECT sum(Try_Parse(金額為Int使用'en-US')),分支FROM tblproducts
WHERE id = 4 GROUP BY分支

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM