SQL取整 比如说我的字段里面的值分别是58323 25 4578 位数少于3位的不管,大于三位的把个位十位更新为00
发布网友
发布时间:2023-04-25 14:52
我来回答
共4个回答
热心网友
时间:2023-10-15 21:48
1\
update 表 set 字段=floor(字段/100)*100
where 字段>100
;
2\
个位:update 表 set 字段=case when 字段%10=9 then 字段-1 else 字段 end;
十位:update 表 set 字段=case when floor(字段/10)%10=9 then 字段-10 else 字段 end;
百位:update 表 set 字段=case when floor(字段/100)%10=9 then 字段-100 else 字段 end;
如果是纯整数,也可以使用substring来处理。
热心网友
时间:2023-10-15 21:48
例如表:tablea_9
栏位:a
58300
54800
25
if exists (select * from tablea_9 where len(a)>=4)
begin
update tablea_9
set a=substring(convert(varchar,a),1,len(a)-2)+'00'
where len(a)>=4
end
if exists (select * from tablea_9 where len(a)>=4 and substring( convert(varchar,a),len(a)-2,len(a)) like '%9%')
begin
declare @a int
set @a=3
while (@a>=0)
begin
update tablea_9
set a= substring(convert(varchar,a),1, len(a)-@a)+'8'+substring(convert(varchar,a),len(a)-@a+2,len(a))
where len(a)>=4
and substring( convert(varchar,a),len(a)-2,len(a)) like '%9%'
set @a=@a-1
end
end
热心网友
时间:2023-10-15 21:49
莫非类是这样的?
update [table]
set [column]=[column]-right([column],2)
where [column]>=1000
update [table]
set [column]=[column]-100
where substring(right([column],3),1,1)='9'追问为什么我用right(字段名,2)得出来的数字为0呢
热心网友
时间:2023-10-15 21:49
。。你 这个58323 25 4578 ....这是再一个字段里,还是在多个不同的字段里呢? 有大致的表结构吗?方便别人给你回答