将Decimal添加到表中的数据

时间:2012-03-26 20:44:55

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

我的列中有一个值为'P62519'我试图在此列的前三位后添加小数为'P62.519',但它不起作用,此列的数据类型为nvarchar(10 )

Update Table
Set ColumnName =   REPLACE(LTRIM(SUBSTRING(Table.ColumnName,1,3)),'','.')
where LEN(Code) > 3

我尝试了这个,但是这个Column Columnname是聚集的主键和我表中的另一列,并且不会让我这样说违反约束,虽然我不确定上面我做的是否正确。有人可以建议我如何在我的数据库中的这些值中的三个位置后添加小数?谢谢你的帮助

3 个答案:

答案 0 :(得分:2)

确保外键指定了引用触发操作ON UPDATE CASCADE

我认为UPDATE应该更像这样:

UPDATE TABLE 
   SET ColumnName = SUBSTRING ( ColumnName, 1, 3 ) + '.' 
                       + SUBSTRING ( ColumnName, 4, LEN ( ColumnName ) - 3 )
 WHERE LEN ( ColumnName ) > 3;

答案 1 :(得分:0)

由于您的列充当主键,因此,您的环境正确地告诉您,如果进行了更改,您的主键将会中断!

您是否可以在应用程序层中添加小数?

答案 2 :(得分:0)

您可以使用STUFF()功能:

UPDATE atable
SET Code = STUFF(Code, 4, 0, '.')
WHERE LEN(Code) > 3

另外请务必注意@onedaywhen's advice about updating foreign keys