我正在使用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为整数数据类型。
非常感谢任何建议; )
答案 0 :(得分: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