1

mysql にテーブルがあり、comp_post_code郵便番号形式の列にはスペースM4W1A3がありませんが、郵便番号の一部は 、 などでこのようにAB T1H2J1なっBC V6X3P7QC G0C2R0います。それらから AB BC のこの余分なビットを削除したいと思います。

どうすれば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 に答える