文字列と追加部分が一致するが、追加部分が異なる場合は一致しないようにするにはどうすればよいですか? たとえば、名前のリストがあり、それらをデータベース内の名前と照合する必要がある場合:
リーリー最初に完全一致を試みましたが、何も見つからなかった場合は、外部名文字列の末尾から文字を削除し続け、データベースと一致するレコードが 1 つだけになるまで再度一致を試みます。
この手法は上の表の 1 番目と 3 番目の例と一致しますが、問題は 2 番目の例とも一致することです。プログラムはマシュー語全体が削除されるまで毎回 1 文字を削除し、その後、この場合、これは誤った一致です。
完全一致のみを実行できる、または一致するが片側の名前の追加部分のみがあり、両方に名前の 2 つの異なる部分がある場合は一致しないという提案。
SQL または Python を使用してこの問題を解決できます。
ご協力いただきありがとうございます。
P粉1455438722023-09-21 11:25:47
これは非常に非効率的であり、テーブル全体のスキャンが必要になります。
リーリーORDER BY
句の最初の式は最初に完全一致を基準に並べ替え、次に 2 番目の式は検索文字列全体で始まる name
を基準に並べ替えます。 name
で始まる検索文字列。
もちろん、SET @name_str = '...';
を使用する代わりに、検索文字列をパラメータとして直接渡すこともできます。
db<>fiddle の例をいくつか示します。