1

よろしくお願いします。

それぞれの部分に分解しようとしているアドレスレコードを含むテーブルがあります。残念ながら、私が受け取ったデータはエントリ間であまり一貫して入力されていませんでしたが、物事をクリーンアップするために使用できると私が信じる一貫した要素が1つあります。

基本的に、州(AB、SK)がリストされた後(およびそれを含む)のMailingAddress列からすべての人を削除したいので、基本的に次のようになります。

表:contactinfo

MailingAddress:1234 Something Street、AB A1B 2C4

になります

MailingAddress:1234 Something Street、

番地情報の多くで使われている「、」は削除したくありません。州が「SK」で始まるエントリも削除したいので、クエリを2回実行する必要があります。

皆さんは驚異的に助けてくれました、そして私は本当に助けに感謝します。

4

2 に答える 2

1

あなたがそれで分割することができるならば、,それはおそらく最高でしょう。あなたはこのようにそれを行うことができます:

UPDATE contactinfo
SET MailingAddress = CONCAT(SUBSTRING_INDEX(MailingAddress, ',', 1), ',')

末尾のコンマを追加していることに注意してください。ただし、なぜそれが必要になるのかはわかりません。本当に必要ない場合は、ラッピングCONCAT機能を削除してください。

州コードに基づいて削除する必要がある場合は、次のように行うことができます

UPDATE contactinfo
SET MailingAddress = TRIM(SUBSTRING_INDEX(MailingAddress, 'AB', 1));
UPDATE contactinfo
SET MailingAddress = TRIM(SUBSTRING_INDEX(MailingAddress, 'SK', 1));

上記を機能させるには、MailingAddressで大文字と小文字を区別する照合を行うことが非常に重要であることに注意してください。そうしないと、クエリで、、、、の違いを識別できませABん。明らかに、そこにはおそらく多数のアドレスがあるので、これはデータの更新で実際に問題を引き起こすでしょう。abAbaBab

もちろん、何かをする前に、テーブルのバックアップを作成してください。

于 2012-12-14T17:11:29.927 に答える
-1

MailingAddress列に州名SKまたはABを含むレコードを削除するには、次のようにします。

delete from contactinfo where MailingAddress like '%, SK%' 
or MailingAddress like '%, AB%'
于 2012-12-14T17:05:01.413 に答える