2016-05-28 18 views
2

ビルディングアドレスから末尾の文字を削除しようとしています。 111AMySql Replace and Regex

私はとそれらのパターンを見つけることができます:私はどのようにか、私はので、私は、例えば10の* 26異なる置き換えを行う必要がないことを交換してください内部の正規表現を含めることができるかどうかわからないよしかし

Select Address from Table where Address Regexp '^[0-9]{1,6}[A-Z] ' 

を(私が試した)のいくつかの並べ替え対

Update Table set Address=Replace(Address,'0A','0') where Address like '%0A %' 

Update Table set Address=Replace(Address,regexp ([0-9]{1,6})[A-Z],\1) 
where Address Regexp '^[0-9]{1,6}[A-Z] ' 
+0

検索すると正規表現置換関数が見つかるかもしれませんが、非常に限られていて無駄です。私はこれをMySQLでやっていることを忘れて、C#で正規表現で解析していたcsvを作成し、新しいcsvファイルを作成してMySQLにインポートしました。 –

答えて

1

私はRegex Replacementをまだ見つけていませんが、これは今のところうまくいきました。私はこれらが完全な建物の住所だったことに言及しなかった。 `111A Washington St '。このプロジェクトでは、このような同様の課題に時間を過ごした後、私の結論は正規表現は、このような更新などの機能に統合されるまでとしない限り、見つける、ということである

Update Table set Address= 
concat(
left(SUBSTRING_INDEX(Address,' ',1),CHAR_LENGTH(SUBSTRING_INDEX(Address,' ',1))-1), 
right(Address,(CHAR_LENGTH(Address)-CHAR_LENGTH(SUBSTRING_INDEX(Address,' ',1)))) 
) 
where Address Regexp '^[0-9]{1,6}[A=Z] ' 

substring_indexを使用していることを置き換えます。これは私がやってしまったものですchar_lengthはあなたを遠ざけることができます。私の似たような解決策をここに書いてください。Replace using Locate and/.or regex?

1

私は交換してください内部の正規表現を含めることができますか?

いいえ、MySQLではありません。一口。機能がありません。

これを行う拡張機能がありますが、インストールするにはMySQLサーバーを制御できる必要があります。ここで:https://github.com/mysqludf/lib_mysqludf_preg#readme

+0

プロジェクトのように見えますが、半分ですが!今私の一時的な解決策を答えとして掲示しましたが、コンセンサスは正規表現に置き換わるものではないようです。私がそれをますます使用するようになるにつれて、MySqlの小さなものがたくさんあります。 – user3649739

+1

'regexp_replace'はMariaDBで利用できます。 –