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

Edd*_*e D 1 t-sql sql-server sql-scripts

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

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

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

到目前为止,我的尝试是:

ALTER TABLE [table_name]
ADD [new_element] varchar(5)
IF
    CONTAINS([column_name], "HLTH")
Run Code Online (Sandbox Code Playgroud)

我可能很可怕,可以使用一些帮助.谢谢!

And*_*mar 6

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

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

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

alter table YourTable
add YourColumn varchar(5)
Run Code Online (Sandbox Code Playgroud)

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

update  YourTable
set     YourColumn =
        case
        when OtherColumn like '%Health%' then 'HLTH'
        else 'Default'
        end
Run Code Online (Sandbox Code Playgroud)

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