如何将计算 [位] 数据类型字段添加到 SQL Table?
How do I add a Calculated [bit] Data Type field to a SQL Table?
我想添加一个从布尔 [int] 字段计算得到的 [bit] 字段
SQL Table 如下所示:
CREATE TABLE [dbo].[AutoIndexBoolean](
[RowID] [int] NOT NULL,
[Boolean] [int] NULL,
[BooleanCalc2] AS (case when [Boolean]=(0) then 'False' when [Boolean]=(1) then 'True' end),
SQL 添加列的查询如下所示:
ALTER TABLE [dbo].[AutoIndexBoolean]
ADD [BooleanBit] [bit] AS (CASE WHEN [Boolean]=(0) THEN '0' WHEN [Boolean]=(1) THEN '1' END)
一旦我指定数据类型“[bit]”,AS 就会变成语法错误。
如何将计算 [位] 字段添加到我的 table?
提前致谢
您需要 CAST
/CONVERT
从 CASE
表达式返回的值。您可以像下面这样简短地执行此操作:
ALTER TABLE dbo.AutoIndexBoolean
ADD BooleanBit AS TRY_CONVERT(bit,Boolean);
如果您的列 Boolean
可以具有 1
或 0
的其他值,则执行如下操作:
ALTER TABLE dbo.AutoIndexBoolean
ADD BooleanBit AS CONVERT(bit, CASE Boolean WHEN 0 THEN 0 WHEN 1 THEN 1 END);
当然,真正的 解决方案似乎是将您的列 Boolean
更改为 bit
,然后您不需要第二列。
我想添加一个从布尔 [int] 字段计算得到的 [bit] 字段
SQL Table 如下所示:
CREATE TABLE [dbo].[AutoIndexBoolean](
[RowID] [int] NOT NULL,
[Boolean] [int] NULL,
[BooleanCalc2] AS (case when [Boolean]=(0) then 'False' when [Boolean]=(1) then 'True' end),
SQL 添加列的查询如下所示:
ALTER TABLE [dbo].[AutoIndexBoolean]
ADD [BooleanBit] [bit] AS (CASE WHEN [Boolean]=(0) THEN '0' WHEN [Boolean]=(1) THEN '1' END)
一旦我指定数据类型“[bit]”,AS 就会变成语法错误。
如何将计算 [位] 字段添加到我的 table?
提前致谢
您需要 CAST
/CONVERT
从 CASE
表达式返回的值。您可以像下面这样简短地执行此操作:
ALTER TABLE dbo.AutoIndexBoolean
ADD BooleanBit AS TRY_CONVERT(bit,Boolean);
如果您的列 Boolean
可以具有 1
或 0
的其他值,则执行如下操作:
ALTER TABLE dbo.AutoIndexBoolean
ADD BooleanBit AS CONVERT(bit, CASE Boolean WHEN 0 THEN 0 WHEN 1 THEN 1 END);
当然,真正的 解决方案似乎是将您的列 Boolean
更改为 bit
,然后您不需要第二列。