始める無料で始める

DIFFERENCE() で名前を比較する

前の演習では、flight_statistics テーブルにある統計担当者の名前を SOUNDEX() で確認しました。

今回は同様のことを、DIFFERENCE() 関数を使って行います。DIFFERENCE() は、2 つの文字列が同じ、または非常に似ている場合に 4 を返し、ほとんど似ていない場合は 0 を返します。

もし 2 つの文字列の DIFFERENCE() の結果が 4 なのに、実際のテキストは異なる場合、そのデータはクリーニング対象である可能性があります。

この演習はコースの一部です

SQL Server データベースでのデータクレンジング

コースを見る

演習の手順

  • S1 から statistician_name 列と statistician_surname 列の重複のない値を選択します。
  • flight_statistics テーブルを S2 として内部結合し、各テーブルの対応する列同士の DIFFERENCE が 4 となる、発音が似ている名と姓で結合します。
  • S1S2 でそれぞれ statistician_namestatistician_surname の値が一致していない行のみを抽出するようにフィルターします。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

SELECT 
    -- First name and surnames of the statisticians
	DISTINCT S1.___, S1.___
-- Join flight_statistics with itself
FROM ___ S1 INNER JOIN ___ S2 
	-- The DIFFERENCE of the first name and surname has to be equals to 4
	ON ___(S1.___, S2.___) = 4
	AND ___(S1.___, S2.___) = 4
-- The texts of the first name or the texts of the surname have to be different
WHERE S1.___ <> S2.___
	OR S1.___ <> S2.___
コードを編集して実行