【问题标题】:Converting 78.3 F (nvarchar) to 78.3 (numeric)将 78.3 F (nvarchar) 转换为 78.3 (numeric)
【发布时间】:2015-10-01 18:04:57
【问题描述】:

大家下午好!

试图从存储为“78.3 F”的 SQL 服务器上的数据库中获取温度,并将其设为数字​​“78.3”。数据库将此字段作为 nvarchar。我试过了:

select
Cast(Left(Paint_Environ.Booth1_Temp, Len(Paint_Environ.Booth1_Temp) - 2) As NUMERIC(4,1)) As Temp
from Paint_Environ

但得到一个错误提示“将数据类型 nvarchar 转换为数字时出错”有没有更好的方法将 nvarchar 转换为数字???

提前致谢!

马特

【问题讨论】:

  • 您的代码应该在示例日期 "78.3 F" 上工作,您的数据中还有其他格式吗?

标签: sql-server casting


【解决方案1】:

正如我在 cmets 中提到的,您的代码应该使用数据 '78.3 F'

你可以试试这个

SELECT
   CAST(REPLACE(Booth1_Temp,'F','') AS NUMERIC(4,1)) As Temp
FROM Paint_Environ

更新: 你可以用这个开始调试,看看哪种数据格式给你错误

SELECT   Booth1_Temp 
FROM Paint_Environ
WHERE  ISNUMERIC(REPLACE(Booth1_Temp,'F','')) <> 1

【讨论】:

  • 感谢您的快速回复,EricZ!我仍然得到那个错误。我会尝试更换,也许修剪...会建议。
  • 如果我使用 RTrim(Replace(Paint_Environ.Booth1_Temp, 'F', '')) As Temp,效果很好,
猜你喜欢
  • 1970-01-01
  • 2012-10-18
  • 2013-04-07
  • 2011-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-02
  • 1970-01-01
相关资源
最近更新 更多