0

まず第一に、これは私が取り組んでいるテーブルの簡略化されたバージョンです:

╔═══════╦═══════════╦══════════╦═══════════╗
║  ID   ║ FIRSTNAME ║ LASTNAME ║ COMPANYID ║
╠═══════╬═══════════╬══════════╬═══════════╣
║ 12345 ║ Bob       ║ Smith    ║         3 ║
║ 13826 ║ Bob       ║ Smith.Mr ║         3 ║
║ 16326 ║ Bob       ║ Smith Mr ║         3 ║
║ 16382 ║ Dr.Bob    ║ Smith    ║         3 ║
║ 18372 ║ Kim       ║ Johnson  ║         3 ║
╚═══════╩═══════════╩══════════╩═══════════╝

ID 12345 だけを指定すると、12345 から取得した名前と彼の companyID に基づいてすべてのレコードを取得できるはずなので、基本的には Company 3 の Bob Smith からすべてを取得できます。

このクエリへのアプローチ方法がわかりません。彼の姓名からタイトル、スペース、またはドットを削除する方法が必要です。名と姓を連結し、関数を実行して必要なものを削除すると仮定しています。

Mr、Dr、Jr、Srなど...

そして、ボブスミスで終わります。ID 12345 に関連付けられた名前にこれを行う必要がありますが、WHERE句内でも同様ですよね? これは、名前を比較するためのものです。

このクエリをできるだけ迅速かつ効率的にしようとしていますが、 sub を使用する必要がありSELECTますか? を作成する必要がありFUNCTIONますか? でそれを行う方法がわからない.net

どんなアイデアでも大歓迎です。

編集: クライアントは、Bob Smith.Mr の ID 13826 を送信する可能性があることにも言及する必要がありましたが、これからも Bob Smith ID 12345 を取得する必要があるため、タイトルなどを確実に削除する必要があると思います。 ...

4

3 に答える 3