如何使用计算列和 if 语句创建 table?
How to create table with computed column and if statement?
如标题所示,我正在尝试在 SQL 服务器上创建一个 table,其中包含带有 if 语句的计算列。我已经创建了基本列,目前正在尝试使用 ALTER TABLE 添加计算列。
声明中:
ALTER table zgodnosc add proba as IIF([Zmiana_1_postoj] = 0 ,-50,[Zmiana_1]) float;
我有错误
'float' 附近的语法不正确。
我尝试了很多组合,总是出错。数据类型为:Zmiana_postoj_1 - 位,Zmiana_1 - 整数。
有人知道如何正确编写吗?
谢谢!
在 SQL 服务器中,您将使用:
alter table zgodnosc add proba as (case when Imiana_1_postoj] = 0 then -50 else Zmiana_1 end) ;
不需要类型。不需要额外的括号。我习惯性地包括它们有两个原因。首先,check
约束需要它们。其次,他们在视觉上很好地界定了表达方式。
如果你想要一个特定的类型,你可以convert/cast:
alter table zgodnosc add proba as (convert(float, (case when Imiana_1_postoj] = 0 then -50 else Zmiana_1 end))
注意:我强烈反对使用 IIF()
。它被引入 SQL 服务器以向后兼容 MS Access。 CASE
是 SQL.
中处理条件逻辑的标准方法
去掉 float
- SQL 服务器将从表达式的数据类型推断数据类型。
如果将 -50
替换为 -5E1
或 -50e0
,则表达式的数据类型将变为 float
ALTER table zgodnosc add proba as IIF([Zmiana_1_postoj] = 0 ,-50e0,[Zmiana_1]);
尽管您可能更愿意对此更明确。
相比CASE WHEN ELSE END
,我个人更喜欢IIF
的简洁。我怀疑计算列语法是否可以转移到其他 RDBMS 而不管。
如标题所示,我正在尝试在 SQL 服务器上创建一个 table,其中包含带有 if 语句的计算列。我已经创建了基本列,目前正在尝试使用 ALTER TABLE 添加计算列。
声明中:
ALTER table zgodnosc add proba as IIF([Zmiana_1_postoj] = 0 ,-50,[Zmiana_1]) float;
我有错误
'float' 附近的语法不正确。
我尝试了很多组合,总是出错。数据类型为:Zmiana_postoj_1 - 位,Zmiana_1 - 整数。
有人知道如何正确编写吗?
谢谢!
在 SQL 服务器中,您将使用:
alter table zgodnosc add proba as (case when Imiana_1_postoj] = 0 then -50 else Zmiana_1 end) ;
不需要类型。不需要额外的括号。我习惯性地包括它们有两个原因。首先,check
约束需要它们。其次,他们在视觉上很好地界定了表达方式。
如果你想要一个特定的类型,你可以convert/cast:
alter table zgodnosc add proba as (convert(float, (case when Imiana_1_postoj] = 0 then -50 else Zmiana_1 end))
注意:我强烈反对使用 IIF()
。它被引入 SQL 服务器以向后兼容 MS Access。 CASE
是 SQL.
去掉 float
- SQL 服务器将从表达式的数据类型推断数据类型。
如果将 -50
替换为 -5E1
或 -50e0
,则表达式的数据类型将变为 float
ALTER table zgodnosc add proba as IIF([Zmiana_1_postoj] = 0 ,-50e0,[Zmiana_1]);
尽管您可能更愿意对此更明确。
相比CASE WHEN ELSE END
,我个人更喜欢IIF
的简洁。我怀疑计算列语法是否可以转移到其他 RDBMS 而不管。