原始数据
+-------+----------------+----------------+----------------+
| SeqNo | Name | NameReason | NameDate |
+-------+----------------+----------------+----------------+
| 1 | IronMan | 'emptystring'' | 2019-03-01 |
| 2 | 'emptystring'' | 'emptystring'' | 'emptystring'' |
| 3 | IronMan | 'emptystring'' | 'emptystring'' |
| 4 | IronMan | A | 'emptystring'' |
| 5 | 'emptystring'' | A | 'emptystring'' |
| 6 | 'emptystring'' | 'emptystring'' | 2019-03-01 |
| 7 | IronMan | A | 2019-03-01 |
| 8 | 'emptystring'' | A | 2019-03-01 |
+-------+----------------+----------------+----------------+
必填结果:
+-------+----------------+------------+------------+
| SeqNo | Name | NameReason | NameDate |
+-------+----------------+------------+------------+
| 1 | NULL | NULL | NULL |
| 2 | NULL | NULL | NULL |
| 3 | NULL | NULL | NULL |
| 4 | NULL | NULL | NULL |
| 5 | NULL | NULL | NULL |
| 6 | NULL | NULL | NULL |
| 7 | IronMan | A | 2019-03-01 |
| 8 | 'emptystring'' | A | 2019-03-01 |
+-------+----------------+------------+------------+
查询:
update #A
set NAME=NULL, NameReason=NULL, NameDate=NULL
where NAME<>'' OR NameReason=" OR NameDate <>''
从上面的查询中,仅对SeqNo = 7完成了,我该如何对SeqNo8做呢?
如果不符合条件,如何将其他行更新为null。 对于名称:(仅接受emptyString或字符), 对于nameReason :(仅接受字符), 对于命名者:(仅接受日期)。
处理10mils记录,30cols。不能是硬编码。
答案 0 :(得分:0)
如果不符合条件,如何将其他行更新为null。对于名称:(仅接受emptyString或字符),对于名称原因:(仅接受字符),对于命名对象:(仅接受日期)。
您似乎根本不在乎名称,因为您愿意接受它是空字符串还是非空字符串
因此,我认为您的更新仅需:
update #A
set NAME=NULL, NameReason=NULL, NameDate=NULL
where NameReason=" OR NameDate=''
这也可以写成:
update #A
set NAME=NULL, NameReason=NULL, NameDate=NULL
where not (NameReason=" and NameDate='')
例如“清除掉名称原因或命名为空的每条记录” /“清除所有名称原因和命名均缺乏值的记录”
答案 1 :(得分:0)
请尝试这个。
Update #A
set NAME=NULL, NameReason=NULL, NameDate=NULL
where NAME='' OR NameReason='' OR NameDate = ''