我遇到了一个小问题:我需要从ms sql中的数字改变/减去“0”, 一个小例子:
我得到了 1000008448 它需要:100008448整张桌子......任何人都知道如何做到这一点? (我不熟悉MS SQL :()
编辑:更多示例:
100323将是10323 10233将是1233 10000将是1000 ......
答案 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替换。
很可能你没有正确地表达问题,因为上面是特定问题的答案而不是一般问题。