2012-01-26 13 views
0

"類似の"値を照会するのにLIKEよりも少し優れた特殊演算子が必要です。SQL Server Express:SIMILAR名のクエリのLIKEよりも優れたもの

シナリオ:
私は学生のテーブルを持っており、私はレッスンのテーブルを持っています。レッスンの表は他のソフトウェアからインポートされているため、StudentID列はインポートされた行ではNULLです。そのため、各レッスンで適切な生徒の行を手動で選択する必要があります。StudentID列には、正しく同期されるように入力することができます。どちらの表にも名字が含まれていますが、多くの表記のスペルが間違っています。

行をインポートした後、各レッスン行に格納されている値と「上位5つが最も似ている」学生行の名前をユーザーに提示します。実際、私はそれらを大部分から最低限の類似の順に提示したいと思います。

LIKE演算子を含むクエリでは、特定のテキストが列内に存在する必要があり、 "類似度スコア"が返されないため、これを切り捨てることはありません。

米国郵便局ではこの問題が非常にうまく処理されていると私は理解しています(技術的ではない記事からです)...人々は常に名前と姓を間違えていますが、 。

私は、アルゴリズムがソリューションごとに異なる可能性があることを知っています。たとえば、いくつかのアルゴリズムで音韻を考慮する、他の人は母音と子音の数を考慮する記事を読んでいますが、他の人は電話で話すときに "P"のように聞こえると考える人もいます。

私はすべてのレコードを自分のアプリケーションコードにロードし、自分のアルゴリズムをC#やVB.NETなどで書くことができますが、パフォーマンスを含めて多くの問題があります。私はむしろクエリ内でこれを達成したいので、私は代替案を探しています。

私はSQL Server Expressを使用していますが、このソリューションは他のデータベースプラットフォームにも当てはまります。

答えて

1

SQL ServerはSOUNDEX()関数をサポートしていますが、少なくとも英語以外のテキストを扱う場合には、これはよく似たサウンド名とうまく動作しません。あなたはあなた自身の関数をc#またはvb.netに書くことができ、必要に応じて任意のアルゴリズムを実行し、それをスカラー関数としてSQLサーバにインポートすることができます。 FreeTextのは、あなたのために働くかもしれない

+0

"C#またはvb.netで独自の関数を記述し、必要に応じて任意のアルゴリズムを実行し、スカラー関数としてSQL Serverにインポートすることができます。できます?驚くばかり!私が正しく理解していれば、vb.netに "MYSOUNDEX()"関数を書いてそれをサーバーに格納し、他のSQL関数と同じように使うことができますか?私はこれを行う方法を知りません、これはSQL Expressにも当てはまりますか?私があなたのことを正しく理解しているなら、それを指示するリンクを教えてもらえますか? – PaulOTron2000

+0

http://msdn.microsoft.com/en-us/library/w2kae45k(v=vs.100).aspxを試してみてください。 – Mithrandir

+0

それは私の答えですね。どうもありがとうございました!とにかく、この小さなおしゃべりは、そんなに便利です!これは、スライスされたストアドプロシージャの最善のことです! – PaulOTron2000

関連する問題