1

よろしくお願いします。

テーブルに2つの列があります。
テーブル:contactinfo
列:Hometown、MailingAddress

列HometownとMailingAddressには、重複した(ugh!)情報が含まれています。ここで、Hometownは「city」をリストし、MailingAddressは「1234Street、City」をリストします。

出身地と一致する都市をMailingAddressから削除して、次の場所から移動できるようにします。

出身地:City
Mailing住所:1234 Street、City

出身地:City
Mailing住所:1234 Street、

一部のMailingAddressエントリの番地情報にカンマが含まれているため、「、」を削除したくありません。

繰り返しになりますが、素晴らしい人々に感謝します。

4

3 に答える 3

2

私はこれを使用します:

UPDATE contactinfo
SET MailingAddress = replace(MailingAddress, CONCAT(', ', Hometown), ',')
WHERE MailingAddress LIKE CONCAT('%, ', Hometown)

これMailingAddressにより、で終わるすべての行が選択され、出現するすべての行がaだけに, City置き換えられます(したがって、文字列の最後で1回だけ発生することを確認する必要があります)。, City,, City

于 2012-12-14T18:47:59.110 に答える
0

使用しているスクリプトはわかりませんが、最初に一致する行を取得してから、各行についてスクリプト内の文字列関数を使用して重複を削除し、対応する行を更新する必要があります。

あなたの基準で選択するためのクエリ(私があなたを正しく理解している場合):

SELECT * FROM contactinfo WHERE MailingAddress LIKE CONCAT('%', Hometown)
于 2012-12-14T18:04:33.147 に答える
0

MySQL文字列関数を見てください:http: //dev.mysql.com/doc/refman/5.0/en/string-functions.html

問題のあるレコードを特定したとすると、新しい都市と住所のフィールドを更新できるはずです(ソースデータを変更しないように一時フィールドを使用してください)。あなたはこのようなことをすることができます:

UPDATE contactinfo
SET new_MailingAddress = SUBSTRING_INDEX(MailingAddress, ',' 1) 
WHERE id IN [SELECT offending records]

最もエレガントではありませんが、出発点となるはずです。他のすべての文字列関数をチェックして、ニーズに最適な関数を確認してください。より問題のあるデータに対しては、正規表現を実行することもできると思います。

幸運を。

于 2012-12-14T18:19:00.680 に答える