插入并初始化SQL列,其值取决于另一个列数据

时间:2013-05-13 13:39:23

标签: sql-server tsql sql-scripts

我是编写SQL脚本的新手,可以使用一些帮助。我需要创建一个只运行一次的脚本,并将列添加到现有表中。此列需要具有直接依赖于另一列的值的值。该值取决于另一列的文本值是否包含一些文本。

例如,我需要一种方式来说明以下值“MNA-HLTH-CAR”:

if (tableValue.contains("HLTH")) {
newColumn.insert("Health"); //Insert new column value Health
} else if (tableValue.contains......

到目前为止,我有尝试:

ALTER TABLE [table_name]
ADD [new_element] varchar(5)
IF
    CONTAINS([column_name], "HLTH")

我可能很恐怖,可以使用一些帮助。谢谢!

1 个答案:

答案 0 :(得分:6)

如果列始终是依赖的,并且您使用的是支持它的DBMS,则可以使用计算列。对于SQL Server,它看起来像:

alter table YourTable
add YourColumn as
        (
        case
        when OtherColumn like '%Health%' then 'HLTH'
        else 'Default'
        end
        )

要添加包含值的实际列,您可以使用两步法。添加列后:

alter table YourTable
add YourColumn varchar(5)

运行更新查询以设置其值:

update  YourTable
set     YourColumn =
        case
        when OtherColumn like '%Health%' then 'HLTH'
        else 'Default'
        end

那应该初始化新列。但与计算列不同,现在由您来维护它。