如何根据同一表中的另一列数据填充一列?

时间:2016-08-01 22:42:00

标签: mysql sql

我将两组数据合并到一个表中。一个是美国地址,另一个是加拿大地址。我需要选项才能按国家/地区排序。所以我在表格中插入了一个空白的国家/地区列,现在我的表格如下所示:

 state | country | zip
-----------------------
       |         | 
       |         |


我有状态和zip数据,但我的国家/地区列是空的。由于美国邮政编码格式为5位数(例如12345),而CAN压缩格式为(例如G5Y 5S7),因此可以使用mysql以某种形式填充国家/地区数据...

UPDATE table 
SET country = US 
WHERE zip (LIKE or =) (US zip format);

然后返回并使用某种WHERE zip LIKE NULL用CAN填充其余的国家/地区数据?

由于

1 个答案:

答案 0 :(得分:2)

您可以在zip列中查看值的长度。

UPDATE table 
   set country = 'US'
 where char_length(zip) = 5;

然后:

UPDATE table 
   set country = 'CAN'
 where country is null

- 或者,一气呵成 -

UPDATE table t
   set country = 
  (case when char_length(t.zip) = 5
   then 'US'
  else 'CAN'
  end);