Wie ordne ich Zeichenfolgen mit angehängten Teilen zu, aber nicht, wenn sie unterschiedliche angehängte Teile haben? Wenn ich beispielsweise eine Liste mit Namen habe und diese mit Namen in meiner Datenbank abgleichen muss:
| My DataBase | Foreign table | | David James Malan Neeko | David James Malan | | David James Malan Neeko | David James Malan Mathew | | David James Malan Neeko | David jam Mlan |
Ich habe zuerst versucht, eine exakte Übereinstimmung zu erzielen, und wenn sie nicht gefunden wird, entferne ich immer wieder ein Zeichen vom Ende der externen Namenszeichenfolge und versuche es erneut mit der Übereinstimmung, bis nur noch ein Datensatz mit meiner Datenbank übereinstimmt.
Diese Technik entspricht dem ersten und dritten Beispiel in der Tabelle oben, das Problem besteht jedoch darin, dass sie auch mit dem zweiten Beispiel übereinstimmt, da das Programm jedes Mal ein Zeichen entfernt, bis das gesamte Mathew-Wort entfernt ist, und dann eine Übereinstimmung findet, nämlich In diesem Fall handelt es sich um eine falsche Übereinstimmung.
Irgendwelche Vorschläge, damit ich nur eine exakte Übereinstimmung oder eine Übereinstimmung herstellen kann, aber nur den zusätzlichen Teil des Namens auf einer Seite habe, sie aber nicht zuordnen kann, wenn beide zwei unterschiedliche Teile des Namens haben.
Sie können SQL oder Python verwenden, um dieses Problem zu lösen.
Vielen Dank im Voraus für Ihre Hilfe.
这是非常低效的,将需要进行全表扫描。
ORDER BY
子句中的第一个表达式将首先对完全匹配进行排序,然后第二个表达式将对以整个搜索字符串开头的name
进行排序,然后是以name
开头的搜索字符串。显然,你可以直接将搜索字符串作为参数传递,而不是使用
SET @name_str = '...';
。这里有一些示例的 db<>fiddle。