2012-02-15 21 views
2

在一个SQL Server数据库中,我要更新一些字段,查询(,是小数分隔符):SQL更新,串数字

UPDATE MyTbable 
SET 
Field1 = CAST('111,11' AS DEC(18,4)), 
Field2 = CAST('222,22' AS DEC(18,4)), 
Field3 = CAST('333,33' AS DEC(18,4)) 
WHERE Id = '1' 

我收到的错误: 错误的数据转换键入varchar到数字。我试着跟投,同样的问题

字段1,字段2和字段3是数字38,2

任何想法?

感谢,

+0

尝试删除字符串中的''' – Hadas 2012-02-15 11:17:47

回答

1

使用.,而不是,

UPDATE MyTbable 
SET 
    Field1 = CAST('111.11' AS DEC(18,4)), 
    Field2 = CAST('222.22' AS DEC(18,4)), 
    Field3 = CAST('333.33' AS DEC(18,4)) 
WHERE Id = '1' 

如果你想以后选择这些值作为字符串,并将逗号,然后做到这一点:

select replace(cast(Field1 as varchar(30)), '.',','), 
     replace(cast(Field2 as varchar(30)), '.',','), 
     replace(cast(Field2 as varchar(30)), '.',','), 
where Id = '1' 
+0

确定但是当我做一个select时,分隔符必须是逗号 – 2012-02-15 11:22:37

1

删除逗号您查询,如:

UPDATE MyTbable 
SET 
Field1 = CAST('11111' AS DEC(18,4)), 
Field2 = CAST('22222' AS DEC(18,4)), 
Field3 = CAST('33333' AS DEC(18,4)) 
WHERE Id = '1' 

,或者你可以rmove使用逗号替代:

replace('111,11',',','.') 
2

以逗号出来。

UPDATE MyTbable 
SET 
Field1 = CAST(REPLACE('111,11',',','.') AS DEC(18,4)), 
Field2 = CAST(REPLACE('222,22',',','.') AS DEC(18,4)), 
Field3 = CAST(REPLACE('333,33',',','.') AS DEC(18,4)) 
WHERE Id = '1'