【问题标题】:Converting decimal to int in SQL在 SQL 中将十进制转换为 int
【发布时间】:2016-02-11 10:13:03
【问题描述】:

我正在尝试将表中的列从十进制转换为 int 或 bigint。

ALTER PROCEDURE [dbo].[spr_ODW_GetStocksForGlobalPart]
    @globalPartId bigint
AS
BEGIN
    SELECT     
        dbo.tbl_ODW_SvPartSapLocation.stockBlocked, 
        dbo.tbl_ODW_SvPartSapLocation.stockUnrestricted, 
        dbo.tbl_ODW_SvPartSapLocation.stockValuated, 
        dbo.tbl_ODW_SvPartSapLocation.stockValuatedCurrency, 
        tbl_ODW_SapLocation.name as sapLocationName
    FROM         
        dbo.tbl_ODW_GlobalPart 
    INNER JOIN
        dbo.tbl_ODW_SvPartSapLocation ON dbo.tbl_ODW_GlobalPart.id = dbo.tbl_ODW_SvPartSapLocation.globalPartId
    INNER JOIN
        tbl_ODW_SapLocation ON  dbo.tbl_ODW_SvPartSapLocation.sapLocationId = tbl_ODW_SapLocation.id
    WHERE     
        (dbo.tbl_ODW_GlobalPart.id = @globalPartId)

UPDATE [dbo].[spr_ODW_GetStocksForGlobalPart]
ALTER COLUMN dbo.tbl_ODW_SvPartSapLocation.stockValuated int/bigint

有人可以帮我吗?

【问题讨论】:

  • 标记使用的 dbms。 (该代码与 ANSI SQL 相差甚远……)
  • 它是用 T-SQL 编写的
  • 你没试过CAST or CONVERT
  • 据我所知,从十进制到 int 的转换是隐式的,它是自动进行的,我不需要 CAST 或 CONVERT,但我会尝试。

标签: sql-server tsql decimal


【解决方案1】:

需要使用ALTER TABLE修改表结构:

ALTER TABLE [dbo].[tbl_ODW_SvPartSapLocation]
ALTER COLUMN stockValuated INT

UPDATE 用于更新表中的数据行 - 而不是表结构。

如果您只是想在从表中选择时更改存储过程中的数据类型,请使用CAST

SELECT     
    dbo.tbl_ODW_SvPartSapLocation.stockBlocked, 
    dbo.tbl_ODW_SvPartSapLocation.stockUnrestricted, 
    CAST(dbo.tbl_ODW_SvPartSapLocation.stockValuated AS INT), 
    .......

【讨论】:

  • 我想明白,我无法更新存储过程中的列?
  • 也许你问错了问题。要更改列类型,您必须遵循 @marc_s 答案。但是,如果您只想获取不同类型的值,您可以使用 CASTCONVERT
猜你喜欢
  • 2016-07-19
  • 1970-01-01
  • 2015-09-17
  • 1970-01-01
  • 2013-11-18
  • 1970-01-01
  • 2017-04-03
  • 2011-11-27
  • 2011-09-21
相关资源
最近更新 更多