0

我有一个数据库问题,其中用户输入了一个小数点,而逗号会经常出现。我将努力纠正这个问题,但需要修复已经输入的 100 多条记录。它混合了正确的位置和不正确的位置

小例子:

153.30
129.30
152.709
153.308
108.777
21.369

我想保留小数点表示美分的条目,并删除应该是逗号的小数点看起来像这样。

153.30
129.30
152709
153308
108777
21369
4

2 回答 2

2

我认为您将在这里度过一段非常艰难的时光,最快的方法是抽查 100 行并手动修复它们。原因如下:

DECLARE @x TABLE(m MONEY);

INSERT @x SELECT 153.30  UNION ALL SELECT 153.300;

SELECT m FROM @x;

结果:

m
------
153.30
153.30

SQL Server 将向您显示相同的内容。我想不出一种方法来隐式或显式地转换为字符串(或二进制或任何其他类型),以便在这两个值到达表后将它们区分开来。

现在,您可以缩小范围,对于以零结尾的三位小数:

DECLARE @x TABLE(m MONEY);

INSERT @x SELECT 153.30  UNION ALL SELECT 153.300
UNION ALL SELECT 153.309 UNION ALL SELECT 24.125;

SELECT m FROM @x WHERE m * 1000 % 10 > 0;

结果:

m
-------
153.309
 24.125

但是对于那些以零结尾的人,你就靠自己了。所以,修复数据,拍拍用户的手腕,然后继续前进。

于 2013-08-23T19:07:47.287 回答
1
create table #tt (value varchar(18))
insert into #tt select '153.30'
insert into #tt select '152.709'

select * from
#tt
where len(replace(substring(value,Charindex('.',value),999),'.','')) > 2

我认为这可以帮助您,我使用 varchar 类型制作了这个示例,并且使用 convert 可能有助于找到需要更新的内容。

于 2013-08-25T23:42:14.473 回答