2017-12-05 8 views
0

私のプロジェクトがペースを収集するとして、私は、一部のユーザーが誤って航空機モデルを入力していることに気づいた - (フィールドが「モデル」である)、たとえばとして -MY SQL更新クエリ

737-8AS 737-8k3 757から222

B737-8AS B737-8k3 B757-:私は、クエリを経由して何をしたいのか など

は、例えば上記に変更されるだろう、これらを介して実行し、先頭の「B」を追加することです222

私は私の毎日の更新スクリプトを持っていることである - SETをスポッティングSETモデル='B747-%' WHEREモデルLIKE '747-%'; UPDATEをスポッティングSETモデル='B737-%' WHEREモデルLIKE '737-%'; UPDATEをスポッティングSETモデル='B727-%' WHEREモデルLIKE '727-%'; UPDATEをスポッティングSETモデル='B717-%' WHEREモデルLIKE '717-%'; UPDATEをスポッティングSETモデル='B707-%' WHEREモデルLIKE '707-%'; UPDATEをスポッティング

/* Set Boeings */ UPDATEモデル='B757-%' WHEREモデルLIKE '757-%'; UPDATEスポッティングSETモデル='B767-%' WHEREモデルLIKE '767-%'; UPDATEスポッティングSET m odel ='B777-%' WHEREモデルLIKE '777-%'; UPDATEスポッティングSETモデル='B787-%' WHEREモデルLIKE '787-%';

これは、先頭の「B」を与えるために、データを編集していますが、それは、その後、「737-8ASは/ W」「B737となりB737-

後にすべてのものをドロップ - "ここで" B737-8AS/W "にする必要があります。

私はこれが何か簡単でないと思います。

答えて

2

%は単なるワイルドカード文字です。 update文はwhere句でワイルドカードが一致したものを「認識」しません。あなたが好きなもの、更新文で実電流値を含めることになるでしょう:

UPDATE spotting SET model = CONCAT('B',model) WHERE model LIKE '707-%'; 
+0

これはすごくうまくいきます - ありがとうございました! –

0

それはちょうど私が思うに、SET model='B-' + modelでなければなりません。既存の値に新しいテキストを追加する必要があります。その文脈では%は何もしません。したがって、私はあなたがすべての行に同じことを前に置いているので、あなたは1つのupdate文しか必要としないと思います。

UPDATE spotting SET model = 'B-' + model WHERE model LIKE '7%'; 

また、あなたは、人々が入力する。このデータを使用しているので、数字は将来的に正しい形式で常にどんなフォームにいくつかの入力検証を追加することを検討すべきです。

+0

私は入力検証を追加していますが、いくつかのデータは "自動レーダーシステム"から直接送られるため(データは他のソースから取り込まれるなど)、まだ調整が必要です。 –

+0

それは十分ですが、インポートプロセスの一環として何らかの前向きなクレンジングやフィルタリングを潜在的に行うことはできますが、やっています。とにかく、変更されたクエリは機能しますか?もしそうなら、答えを受け入れることを忘れないでください - ありがとう:-) – ADyson