如何从SQL Server 2008中的列中删除所有小数?
如果我有一个列X_Coord
并且有三行的值,我将如何修剪它以便在最后一个整数后面没有小数?
例如,假设我的表名为RCMP
,列如下:
X_Coord
---------------
- 5588790.77000
- 5588873.79000
- 5588943.71000
如何在单个查询中删除小数?
我尝试ROUND
,但最终会使值显示为5588790.00000
。
我希望它显示为:5588790
。
答案 0 :(得分:0)
将十进制数据类型转换为整数。
SELECT CAST(x_coord AS INT)
FROM dbo.RMCP
修改:我已更新代码以反映如何更改数据类型。这是一个很大的影响变化所以要非常小心。我希望你在开发中测试它。
if object_id('#Demo') is not null
drop table #Demo;
go
create table #Demo(x_coord decimal(12,5))
insert into #Demo values(5588790.77000),(5588873.79000),(5588943.71000)
alter table #Demo
ALTER COLUMN x_coord INT NULL
select *
from #Demo
GO
- 或者这个有用
if object_id('#Demo') is not null
drop table #Demo;
go
create table #Demo(x_coord decimal(12,5))
insert into #Demo values(5588790.77000),(5588873.79000),(5588943.71000)
alter table #Demo
add new_x_coord INT NULL
UPDATE #Demo SET new_x_coord = CAST(x_coord AS INT)
GO
--********************** dont drop anything until you confirm the data is good!!!!!!!!!!!!! and test this in development *************************************
ALTER TABLE #Demo
DROP COLUMN x_coord
exec sp_rename 'dbo.#Demo.new_x_coord','x_coord','COLUMN'
select *
from #Demo
GO