Nvarchar转换为十进制失败

时间:2019-05-23 07:12:12

标签: sql sql-server sql-server-2008

我有一个Microsoft SQL 2008 R2数据库,将小数存储为Nvarchar(20)。由于某些原因,所有字段都用空格填充。

  

转换失败,并出现以下错误:
  “ 消息8114,级别16,状态5,第7行
  将数据类型nvarchar转换为数字时出错。

我用RTRIM()删除空格,使用REPLACE()用点替换逗号,并使用CAST()进行转换。该行将失败。我添加了第二行而不进行强制转换,只是为了直观地检查值,但看不到任何导致失败的原因。然后,我再次取消对第一行的评论,然后投放成功了。但是仅当第二行与之结合在一起时。我不知道是什么原因造成的。

SELECT
    CAST(REPLACE(RTRIM(nvarcharDecimalValue),',','.') AS DECIMAL(12,3)) as WillFailIfAlone,
    REPLACE(RTRIM(nvarcharDecimalValue),',','.') as NeedToBeHere
FROM myTable

我期望返回的值是用点分隔的任何十进制数字。仅使用手动插入的值运行查询即可正常工作。

例如:

SELECT 
    CAST(REPLACE(RTRIM('                5,86'),',','.') AS DECIMAL(18,3)) AS test

0 个答案:

没有答案