我有一个数据库问题,其中用户输入了一个小数点,而逗号会经常出现。我将努力纠正这个问题,但需要修复已经输入的 100 多条记录。它混合了正确的位置和不正确的位置
小例子:
153.30
129.30
152.709
153.308
108.777
21.369
我想保留小数点表示美分的条目,并删除应该是逗号的小数点看起来像这样。
153.30
129.30
152709
153308
108777
21369
我有一个数据库问题,其中用户输入了一个小数点,而逗号会经常出现。我将努力纠正这个问题,但需要修复已经输入的 100 多条记录。它混合了正确的位置和不正确的位置
小例子:
153.30
129.30
152.709
153.308
108.777
21.369
我想保留小数点表示美分的条目,并删除应该是逗号的小数点看起来像这样。
153.30
129.30
152709
153308
108777
21369
我认为您将在这里度过一段非常艰难的时光,最快的方法是抽查 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
但是对于那些以零结尾的人,你就靠自己了。所以,修复数据,拍拍用户的手腕,然后继续前进。
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 可能有助于找到需要更新的内容。