2017-08-01 49 views
0

我有一个SQL Server表具有数据类型“概率”列浮点数。此列中包含的值,例如:更新整个SQL Server列

| Probability |   | Probability | 
---------------   --------------- 
| 0.052325243 |   | 0.05  | 
| 0.155062365 |   | 0.15  | 
| 0.347534343 |  => | 0.34  | 
| 0.234532345 |   | 0.23  | 
| ...   |   | ...   | 
| ...   |   | ...   | 
| ...   |   | ...   | 

我需要缩短在同一列中的值的右侧所示。

我试图作为查询:

UPDATE Graph 
SET Probability = SELECT CAST(ROUND(ID, 2, 1) AS DECIMAL (18, 2)) 

其中 'ID' 是在表中的主键。该错误是关键字附近的语法不正确“选择”

+3

删除第二个'SELECT'因此'SET Probability = CAST(...' –

+3

另外,请注意浮点数是近似值,所以即使是这一轮,您也可能获得像.1500000000000001这样的值。 –

+0

@DanGuzman说的话。需要显式控制数据的小数长度,那么你应该使用像支持它的'Decimal(p,s)'这样的数据类型。 – RBarryYoung

回答

0

试试这个:

UPDATE Graph SET Probability = CAST(ROUND(Probability , 2, 1) AS DECIMAL (18, 2)) 

希望这有助于!