我知道这是不好的做法,但由于数据迁移列的要求,这是我能做到的唯一方法。
我希望在文本域中向上舍入(CEIL)或向下舍入(FLOOR)我的值。
我知道他们都是整数或小数,所以不用担心那里的数据不好。
UPDATE [dbo].[T01]
SET [2 37] = CAST(
FLOOR(CONVERT(decimal(10,5),(CAST([2 37] AS varchar(10)))))
AS text )
WHERE [2 37] LIKE '%.%'
我的第一次尝试是:
UPDATE [dbo].[Tomcat 19032013 01]
SET [2 37] = FLOOR([2 37])
WHERE [2 37] LIKE '%.%'
长话短说我希望能够在我的文本字段中填写或细化该数据!
我正在使用SQL 2005 - Developer Edition
答案 0 :(得分:2)
我假设您要将值四舍五入为最接近的整数
向下舍入
UPDATE [dbo].[T01]
SET [2 37] =
CAST(CAST(FLOOR(CONVERT(decimal(10,5),(CAST([2 37] AS varchar(10))))) as VARCHAR(10))
AS text )
WHERE [2 37] LIKE '%.%'
四舍五入
UPDATE [dbo].[T01]
SET [2 37] = CAST(
CAST(CEILING(
CONVERT(decimal(10,5),(CAST([2 37] AS varchar(10))))) as VARCHAR(10))
AS text )
WHERE [2 37] LIKE '%.%'
答案 1 :(得分:2)
您应该添加列以进行转换。
DECLARE @T01 TABLE([2 37] text, [2 37 Floor] int, [2 37 Ceiling] int)
INSERT @T01 ([2 37]) VALUES('1.5')
INSERT @T01 ([2 37]) VALUES('4.1')
INSERT @T01 ([2 37]) VALUES('5.9')
update t
set [2 37 Floor]=floor(CONVERT(decimal(8,2),(CAST([2 37] AS varchar(10)))) )
, [2 37 Ceiling] =ceiling(CONVERT(decimal(8,2),(CAST([2 37] AS varchar(10)))))
from @T01 t
WHERE [2 37] LIKE '%.%'
select * from @T01