我遇到一个数据库问题,用户输入了一个小数点,其中逗号会频繁出现。我将努力纠正未来的问题,但需要修复已输入的100多条记录。它是正确位置和错误位置的混合
小例子:
153.30
129.30
152.709
153.308
108.777
21.369
我想保留小数表示分数的条目,并删除小数点,它应该是逗号,如下所示。
153.30
129.30
152709
153308
108777
21369
答案 0 :(得分: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
但对于那些以零结尾的人来说,你就是靠自己。因此,修复数据,拍打用户的手腕,然后继续前进。
答案 1 :(得分: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可能有助于找到需要更新的那些。