0

我知道这是不好的做法,但由于数据迁移列的要求,这是我能做到的唯一方法。

我希望在文本字段中向上取整(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 - 开发人员版

4

2 回答 2

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 '%.%'
于 2013-07-31T12:48:45.157 回答
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
于 2013-07-31T13:48:59.120 回答