所以我有一个包含地址,城市,州和邮政编码列的数据库。问题是地址栏包括地址以及城市,州和邮政编码。由于这些已经是列,我不希望它们在地址列中。有没有办法动态删除匹配city,state和zip的地址列中的数据?该数据库有超过50,000行。
答案 0 :(得分:0)
可能REPLACE
,但要弄乱:在MySQL控制台试试这个:
mysql> create table `m2` (`id` int(11) auto_increment, a TEXT, b TEXT, PRIMARY KEY (`id`)) ENGINE=InnoDB;
Query OK, 0 rows affected (0.06 sec)
mysql> insert into `m2` (a, b) VALUES ('200 Honolulu Drive Los Angeles CA 89999','89999');
Query OK, 1 row affected (0.01 sec)
mysql> select * from m2;
+----+-----------------------------------------+-------+
| id | a | b |
+----+-----------------------------------------+-------+
| 1 | 200 Honolulu Drive Los Angeles CA 89999 | 89999 |
+----+-----------------------------------------+-------+
1 row in set (0.00 sec)
mysql> update `m2` set a = TRIM(REPLACE(a, b,'')) WHERE id = 1;
Query OK, 1 row affected (0.06 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from m2;
+----+-----------------------------------+-------+
| id | a | b |
+----+-----------------------------------+-------+
| 1 | 200 Honolulu Drive Los Angeles CA | 89999 |
+----+-----------------------------------+-------+
1 row in set (0.00 sec)
如果您的格式不是非常规律(或者您在地址字段中的多个位置都有邮政编码,州或城市价值),您可能会轻易损坏您的地址字段,因此我建议您使用代码执行此操作,而不是SQL。
但它紧挨着你。