在ms sql:1001到101中减去/更改“零”数字

时间:2012-09-19 08:28:52

标签: sql sql-server

我遇到了一个小问题:我需要从ms sql中的数字改变/减去“0”, 一个小例子:

我得到了 1000008448 它需要:100008448整张桌子......

任何人都知道如何做到这一点? (我不熟悉MS SQL :()

编辑:更多示例:

100323将是10323 10233将是1233 10000将是1000 ......

5 个答案:

答案 0 :(得分:4)

以下内容可能会执行您想要的操作(它将“最高位”x0“替换为”x):

UPDATE table SET col=col
    -power(10, floor(log10(col)))*floor(col/power(10, floor(log10(col))))
    +power(10, floor(log10(col))-1)*floor(col/power(10, floor(log10(col))))

请参阅sqlFiddle :)

答案 1 :(得分:0)

是数字字段吗?你的所有数字都是10亿个数字吗?

如果是的话,

UPDATE table 
SET mycol = mycol - 900000000

答案 2 :(得分:0)

update yourtable set
      yourcolumn=
        cast(stuff(cast(yourcolumn as varchar),
                    CHARINDEX('0',cast(yourcolumn as varchar)),1,'')
             as int)
      where CHARINDEX('0',cast(yourcolumn as varchar))>0

答案 3 :(得分:0)

这适用于您目前发布的所有示例。它正在进行字符串操作,我通常建议最好留给比SQL Server更好的工具:

declare @T table (Frm int not null,Too int not null)
insert into @T (Frm,Too) values
(1001, 101),
(1000008448, 100008448),
(100323, 10323),
(10233, 1233),
(10000, 1000)

select
    CONVERT(int,SUBSTRING(Frm,1,1) + SUBSTRING(Frm,3,20)) Frm,Too
from
    (select CONVERT(varchar(20),Frm) Frm,Too from @T) t

结果:

Frm         Too
----------- -----------
101         101
100008448   100008448
10323       10323
1233        1233
1000        1000

但毫无疑问,您的实际数据中有更多案例表明这不起作用。

答案 4 :(得分:-1)

根据您对问题的初步措辞,您需要以下SQL语句

update <table>
set <field> = 100008448
where <field> = 1000008448;

当然,您将使用您的tablename和fieldname替换。

很可能你没有正确地表达问题,因为上面是特定问题的答案而不是一般问题。