我遇到了一个小问题:我需要从 ms sql 中的一个数字中更改/减去“0”,一个小例子:
我得到了 1000008448 它必须是: 100008448 在整张桌子上......
任何人都有一个好主意怎么做?(我不擅长 MS SQL :( )
编辑:更多示例:
100323 将是 10323 10233 将是 1233 10000 将是 1000...
我遇到了一个小问题:我需要从 ms sql 中的一个数字中更改/减去“0”,一个小例子:
我得到了 1000008448 它必须是: 100008448 在整张桌子上......
任何人都有一个好主意怎么做?(我不擅长 MS SQL :( )
编辑:更多示例:
100323 将是 10323 10233 将是 1233 10000 将是 1000...
以下可能会执行您想要的操作(它将最高有效数字“替换”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))))
它是一个数字字段吗?你所有的数字都是1000000000个数字吗?
如果是这样的话,
UPDATE table
SET mycol = mycol - 900000000
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
这适用于您迄今为止发布的所有示例。它是作为字符串操作进行的,我通常建议最好留给比 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
但毫无疑问,在您的实际数据中存在更多不适用的情况。
根据您对问题的最初表述,您需要以下 SQL 语句
update <table>
set <field> = 100008448
where <field> = 1000008448;
当然,您将替换为您的表名和字段名。
很可能是您没有正确表述问题,因为以上是针对特定问题而不是一般问题的答案。