mysql:从另一列中包含的列中删除文本

时间:2011-09-16 18:30:44

标签: mysql

所以我有一个包含地址,城市,州和邮政编码列的数据库。问题是地址栏包括地址以及城市,州和邮政编码。由于这些已经是列,我不希望它们在地址列中。有没有办法动态删除匹配city,state和zip的地址列中的数据?该数据库有超过50,000行。

1 个答案:

答案 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。

但它紧挨着你。