我试图清理其中一个表格的某些字段(profiles
),有些列的电话号码是值。
+--------+--------------+---------------+--------------+
| id | phone | address | zip_code |
+--------+--------------+---------------+--------------+
| 1 | 1234567890 | 1234567890 | 45455 |
| 2 | 7777888800 | 56 st. | 7777888800 |
+--------+--------------+---------------+--------------+
如何更新值等于电话字段的所有字段,并按如下方式清理它们?
+--------+--------------+---------------+--------------+
| id | phone | address | zip_code |
+--------+--------------+---------------+--------------+
| 1 | 1234567890 | | 45455 |
| 2 | 7777888800 | 56 st. | |
+--------+--------------+---------------+--------------+
答案 0 :(得分:0)
如果只有这两个字段,您可以使用2个简单查询来验证每个字段:
UPDATE profiles
SET address = NULL
WHERE address = phone
UPDATE profiles
SET zip_code = NULL
WHERE zip_code = phone
答案 1 :(得分:0)
您可以使用case
语句更新所有列,如下所示
update profile2 p
set
p.address = case when cast(p.phone as char(20)) = p.address then null else p.address end,
p.zipcode = case when p.phone = p.zipcode then null else p.zipcode end,
p.fax = case when p.phone = p.fax then null else p.fax end;
我还添加了一列fax
供您参考。