从SQL中的列截断小数

时间:2013-07-26 14:07:13

标签: sql-server-2008 truncate rounding decimal

如何从SQL Server 2008中的列中删除所有小数?

如果我有一个列X_Coord并且有三行的值,我将如何修剪它以便在最后一个整数后面没有小数?

例如,假设我的表名为RCMP,列如下:

X_Coord
---------------
- 5588790.77000
- 5588873.79000
- 5588943.71000

如何在单个查询中删除小数?

我尝试ROUND,但最终会使值显示为5588790.00000

我希望它显示为:5588790

1 个答案:

答案 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