1

我在 mysql 中有一个表,其中的列comp_post_code是 whivh 邮政编码格式没有空格M4W1A3,但有些邮政编码是这样的,带有,AB T1H2J1等等。我想从中删除这额外的 AB BC 位。BC V6X3P7QC G0C2R0

我怎么能在mysql中做到这一点......(AB BC QC is just example there r many others in them, but all are in front and with space and postcode dont have space

编辑...我试过这个

UPDATE canada_database
SET comp_post_code= SUBSTRING(comp_post_code, 3)

但是它从所有行中删除第一个 3 ......正如我所提到的,有一些有这个问题不是全部..如果我这样做会影响所有。

4

3 回答 3

5
UPDATE canada_database SET comp_post_code = substring_index( comp_post_code, ' ', -1 )

手册:substring_index()

请参阅sqlfiddle上的示例。

于 2013-04-24T13:26:53.813 回答
0

作为一种替代方式...您可以使用正则表达式查询选择您的数据...

select * from canada_database where comp_post_code regexp '[A-Z]{2} [A-Z]*';

然后遍历它们并使用 PHP 更新每个...因为 mysql 不支持基于正则表达式的替换。

于 2013-04-24T13:46:40.813 回答
0
UPDATE canada_database
SET comp_post_code = if(LOCATE(' ',comp_post_code) > 0 , SUBSTRING(comp_post_code , 3) , comp_post_code)
于 2013-04-24T13:47:17.817 回答