2016-04-14 7 views
1

別のデータベース列との類似性に基づいてデータベース列を更新は、私は、次の列を持つデータベーステーブル(顧客)を有する

ID 
ENG_NAME 

は、私がここで問題となっているCUSTOMERSテーブル

からFULL_NAMEエントリとENG.ENG_NAMEエントリのすべてを交換したいです。
ENG_NAMEはウェブフォームを使用して手で詰まっており、一貫性がありません。たとえば、1行に「Robin Hood」が含まれている可能性があります。別の "フード、ロビンL"。もう一つの "Robin L Hood"。

CUSTOMERSテーブルのエントリを検索し、一致するものを見つけてENG.ENG_NAMECUSTOMERS.FULL_NAMEに置き換えます。

例:これを行う方法について

ENG table 
ID  ENG_NAME 
==================== 
1  Robin L Hood 
2  Robin L Hood 
3  Maid M Marion 
4  Robert A Garza 

任意の考え:上記のデータに基づいて

ENG table    CUSTOMERS table   
ID  ENG_NAME  ID  FULL_NAME  FIRST_NAME  MIDDLE_INIT  LAST_NAME 
================  ==================================================================   
1  Hood,Robin  1  Robin L Hood  Robin   L    Hood 
2  Rob Hood  2  Maid M Marion Maid   M    Marion 
3  Marion M  3  Friar F Tuck  Friar   F    Tuck 
4  Rob Garza  4  Robert A Garza Robert   A    Garza 

、私はENG_NAME列は次のように交換する必要があるのでしょうか。 ありがとう

+1

で最高の顧客テーブルにFK参照を持っているので、私は新しい列に入れてしまうが、これは文字列操作の非常に多くを取るために起こっていますSQL forte。あなたは、あなたの一致するロジックを含むようにUDFを作成することができますが、あなたはそれをSQLの外で行う方がよいでしょう。これは潜在的に非常に複雑なトピックで、マッチングルールに関して多くの考えが必要です。 [この10歳の記事](http://datamining.anu.edu.au/publications/2006/tr-cs-06-02.pdf)は、今後の課題をいくつか考えておくべきです。がんばろう! – strickt01

+2

この種のクローズド・ネーム・マッチングは、右にいくのがほぼ不可能です。私にとって大きな疑問は、なぜこれを最初にやりたいのですか?適切にデータを正規化すると、名前のコピーが1つだけ必要になります。 –

+0

あなたは何レコードについて話していますか?あなたはクエリでそれを刺す必要があるかもしれませんが、Excelへのエクスポートのいくつかのタイプを作成し、残りを手作業で行います。前述のように、SQLや他の言語を使用して正しく取得することは難しい作業です。レコードの数が限られている場合は、それが最善の策かもしれません。 – Igor

答えて

1

これは簡単な作業ではありませんが、私は良いC#(または任意の.NET)アルゴリズム類似の文字列部分を検出することから始めます。

次に、C#コードをSQLストアドプロシージャにコンパイルし、SQL Serverを使用してそのコードを呼び出します。このCLRコードは、結果を表に書き込んで分析し、必要なものを実行します。詳細については

CLR SQL Server User-Defined Function

0

私はLevenshtein距離を使用して.NETでそれを行うだろう。 ...

1から始まり、あなたは、いくつかの関係を持ってしようとしている、あなたは次に2,3,4に移動
を決定する必要があり

あなたはCLRに行うことができますが、どのように対処しようとしていますネクタイと?そしてあなたはネクタイを持つつもりです。どのようにそれはまったく一致していないときに決めるつもりですか?本当に -

そして、あなたは、元のデータ
の歴史それとも

関連する問題