4

私は2つの異なるテーブルに2セットの電話番号をtable 1持っており、の単純な形式を持っており、他のテーブルは3つ01234567890の異なる形式を持ってい01234567890ます。01234 56789001234-567890

現在、私はテーブルに対して内部結合を行っているだけで、返される行は数行だけですが、明らかにハイフンまたはスペースを含むものはすべて結合から失われるため、より多くのことが期待されます。

システムのあり方では、テーブル内のデータを3つの形式で変更できないため、標準化やクリーンアップなどができません。

これに取り組むための最良の方法は何でしょうか?

4

1 に答える 1

6

2番目のテーブルに計算列を作成して、電話番号の形式を正規化することを考えると、次のようになります。

ALTER TABLE dbo.YourSecondTable
ADD NormalizedPhone AS REPLACE(REPLACE(PhoneColumn, '-', ''), ' ', '') PERSISTED

この式は、からスペースとダッシュを削除しPhoneColumn、それらの値は、と呼ばれる新しい計算列に格納されますNormalizedPhone

PhoneColumnこの列は、後で値を変更した場合でも、常に最新の状態に保たれます。常に正規化された電話番号が自動的に含まれます。

これで、正規化された電話ストリングで2つのテーブルを簡単に結合でき、より正確な結果が得られるはずです。

于 2013-03-27T09:51:35.643 に答える