0

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

我得到了 1000008448 它必须是: 100008448 在整张桌子上......

任何人都有一个好主意怎么做?(我不擅长 MS SQL :( )

编辑:更多示例:

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

4

5 回答 5

4

以下可能会执行您想要的操作(它将最高有效数字“替换”x0x):

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 :)

于 2012-09-19T08:36:58.200 回答
0

它是一个数字字段吗?你所有的数字都是1000000000个数字吗?

如果是这样的话,

UPDATE table 
SET mycol = mycol - 900000000
于 2012-09-19T08:34:08.757 回答
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
于 2012-09-19T09:05:44.000 回答
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

但毫无疑问,在您的实际数据中存在更多不适用的情况。

于 2012-09-19T09:19:09.240 回答
-1

根据您对问题的最初表述,您需要以下 SQL 语句

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

当然,您将替换为您的表名和字段名。

很可能是您没有正确表述问题,因为以上是针对特定问题而不是一般问题的答案。

于 2012-09-19T08:30:42.597 回答