2016-04-08 15 views
-2

私はこのように、私のDB内のいくつかの「悪い」のデータを持って起こる:同じフィールドに重複した文字列を削除

ID | name  | 
1 | Apple Apple | 
2 | Banana  | 
3 | Orange  | 

私は、「アップル」のように繰り返され、いくつかの名前を継承しています。

「PHP」などのサーバーサイドスクリプトを使用せずに、MySQLで直接「Apple」の複製を削除するにはどうすればよいですか。

所望の結果は、単に "アップル" でなければなりません

+1

のようになります。あなたがスペースを含む名前フィールドに正当なデータを持つことができますか? – Shadow

+0

[mysqlのフィールドから重複する単語を削除する]の可能な複製(http://stackoverflow.com/questions/3996831/remove-duplicate-words-from-field-in-mysql) –

+2

何を削除しますか?行を削除しますか? 2番目の単語を削除しますか?複数の単語がある場合はどうなりますか?異なる単語が2つある場合はどうなりますか? 3つの単語が繰り返されますか?四? _あなたの要件を定義してください。 –

答えて

0

UPDATE table_nameのセット名= 'AppleのWHERE ID = 1;

+0

私は自分自身がこの答えを追加することについて考えていた:) – Shadow

0

文字列を分割して比較することができます。 以下のスクリプトはMSSQLで書かれていますが、あなたはその考えを理解することができます。

declare @z varchar(100); 
set @z = 'Apple Apple' 
--First Part, Second part 
Select SUBSTRING(@z, 0, ((LEN(@z)+1)/2) + 1), SUBSTRING(@z, ((LEN(@z)+1)/2) + 1, LEN(@z)) 

クエリが

Update Table_Name set 
Column_Name = Case 
      When (firstPart = SecondPart) 
      Then FirstPart 
      Else Column_Name 
      End 

Update Table_Name 
set Column_Name = Case 
       when (SUBSTRING(@z, ((LEN(@z)+1)/2) + 1, LEN(@z)) = SUBSTRING(@z, 0, ((LEN(@z)+1)/2) + 1)) 
       Then SUBSTRING(@z, ((LEN(@z)+1)/2) + 1, LEN(@z)) 
       Else Column_Name 
       End 
関連する問題