我想更新表但在更新之前它应该检查空值

时间:2017-12-12 13:16:50

标签: sql sql-server

您好我想通过连接3列值更新表列,但问题是如果3列中的任何一列具有空值,我该如何停止更新。

我的查询在下面给出了我想要更新ind_ref 123的记录但是如果我连接的3列的任何值为null,则它不应该更新display_name列。我怎样才能实现它?

update individual_loc
Set individual_loc.display_name=individual_loc.address1+','+INDIVIDUAL_LOCATION.TOWN+','+INDIVIDUAL_LOCATION.COUNTY
where individual_loc.ind_ref=123 

6 个答案:

答案 0 :(得分:3)

只需在NULL子句中添加WHERE支票即可。

UPDATE individual_loc
SET display_name = address1 + ',' + TOWN + ',' + COUNTY
WHERE ind_ref = 123 AND address1 IS NOT NULL AND TOWN IS NOT NULL AND COUNTY IS NOT NULL

答案 1 :(得分:2)

public ContainerTag addCombo(UserOption userOption, int selectedValue)
{
    return div(
                label(userOption.getLabel().getMsg())
                    .withTitle(userOption.getTooltip().getMsg()),
                select(
                    each(Arrays.asList(RenameFileOptions.values()),
                            next ->
                                iffElse(next.ordinal()==selectedValue,
                                        option(next.name()).attr(Html.SELECTED, Html.SELECTED).withValue(String.valueOf(next.ordinal())),
                                        option(next.name()).withValue(String.valueOf(next.ordinal()))
                                )
                    ))
                .withName(userOption.getOption())
            );
}

答案 2 :(得分:1)

试试这个

update individual_loc
Set individual_loc.display_name=individual_loc.address1+','+
    individual_loc.TOWN+','+individual_loc.COUNTY
where individual_loc.ind_ref=123 
AND address1 is not null
AND town is not null
AND county is not null

基本上,只有在字段不为空时才执行更新

答案 3 :(得分:0)

一种方法是使用COALESCE:

UPDATE individual_loc
SET individual_loc.display_name=COALESCE(individual_loc.address1+','+INDIVIDUAL_LOCATION.TOWN+','+INDIVIDUAL_LOCATION.COUNTY, individual_loc.display_name)
where individual_loc.ind_ref=123;

答案 4 :(得分:0)

您还可以使用coalesce()函数

检查空值
update individual_loc
Set individual_loc.display_name=individual_loc.address1+','+INDIVIDUAL_LOCATION.TOWN+','+INDIVIDUAL_LOCATION.COUNTY
where individual_loc.ind_ref=123 
and coalesce(individual_loc.address1+','+INDIVIDUAL_LOCATION.TOWN+','+INDIVIDUAL_LOCATION.COUNTY, 0) <> 0 

答案 5 :(得分:0)

如果你想避免空问题,只需检查isnull(individual_loc.address1,'')

如果还有别的尝试: IIF((isnull(address1,'')=''OR isnull(TOWN,'')=''或isnull(COUNTY,'')=''),UPDATE STATEMENT,PRINT'False')