0

我正在使用 sql 和 sql-server

我在带有案例的视图中创建了一个新列。问题如下:我相信新创建的列具有默认数据类型。

我的问题是如何在创建新列时定义它的数据类型?我尝试过使用转换和转换。

 ALTER VIEW [dbo].[vtbl_dim_vb]
    AS
    SELECT    
      vb_key,ver_login,
      ver_name,
      ver_klass_descr,
      CAST(ver_klass AS varchar(40)) + ' ' + ver_klass_descr AS klass_descr_d,
      store_code,
      store_name,
      CASE WHEN LEFT(ver_klass, 1) = 'S' THEN ver_klass ELSE NULL END AS ver_sector,
      CASE WHEN LEFT(ver_klass, 1) = 'M' THEN ver_klass ELSE NULL END AS ver_metier,
      CASE WHEN LEFT(ver_klass, 1) <> 'S' AND LEFT(ver_klass, 1) <> 'M' THEN ver_klass ELSE NULL END AS ver_rayon
    FROM         
      dbo.tbl_dim_vb

我曾尝试使用 cast 命令,但没有奏效:

  CAST ( expression AS data_type [ ( length ) ] )

我想知道我对第三种情况有什么选择。

这就是我尝试过的代码的样子:

CASE WHEN LEFT(ver_klass, 1) <> 'S' AND LEFT(ver_klass, 1) <> 'M' THEN ver_klass ELSE NULL END AS CAST ( ver_rayon AS int(10) )

我需要新创建的列 ver_rayon 是整数数据类型。

非常感谢您的任何建议;)

4

1 回答 1

1

也许是这样的:

CAST(
(
  CASE 
  WHEN LEFT(ver_klass, 1) <> 'S' AND LEFT(ver_klass, 1) <> 'M' 
  THEN ver_klass 
  ELSE NULL 
  END
) AS INT)
AS ver_rayon
于 2012-04-20T06:56:13.947 回答