如何检查列的字段是否为空,如果为NULL则更新

时间:2015-03-28 14:27:47

标签: sql-server sql-server-2008

CREATE PROCEDURE: - 我有一个名为EVALUATOR的表,其中包含TAG列。我需要查找列TAG是否具有NULL值。如果是,则使用TAG表中的值更新它。

TAG tabel:
   Tag_id  tag_name   tag
    1        c++       cp
    2        oracle    orc
    3        java      jv

EVALUATOR表:

   eval_id   eval_name   domain     specialization   tag

     1        JOHN       DATABASE      oracle         NULL
     2        MATTHEW     PROGRAMMING    JAVA          jv
     3        EDWARD     PROGRAMMING    C++           NULL

3 个答案:

答案 0 :(得分:1)

通常,您可以像这样更新空标记值

update evaluator
set tag = 'some_tag'
where tag is null

答案 1 :(得分:0)

如果tag表中有某种“默认”值:

update evaluator
    set tag = (select t.tag from tag where isdefault = 1)
    where tag is null;

我怀疑你想要这样的东西:

update evaluator e
    set tag = (select t.tag from tag t where e.specialization = t.tag_name)
    where e.tag is null;

答案 2 :(得分:0)

  

取决于您希望以何种方式更新记录。

如果您想手动更新,请使用:

update EVALUATOR 
set tag = 'my_common_tag_to_all_null_values'
where tag is null

或 如果您想使用join更新,请使用: Fiddle Demo

create table TAG(
tag_id int identity(1,1),
  tag_name varchar(50),
  tag varchar(50)
)
insert into TAG (tag_name,tag) values('c++','cp'),
('oracle','orc'),('java','jv')

create table EVALUATOR(
eval_id int identity(1,1),
  eval_name varchar(50),
  domain varchar(50),
    specialization varchar(50),
  tag varchar(50)
)

查询:

update ed
set ed.tag=tg.tag
from EVALUATOR ed join TAG tg on tg.tag_name=ed.specialization where 
ed.tag is null


select * from EVALUATOR 
相关问题