Comment faire correspondre des chaînes avec des parties ajoutées à l'aide de Python, mais pas les faire correspondre si leurs parties ajoutées sont différentes
P粉676588738
P粉676588738 2023-09-20 19:02:23
0
1
541

Comment faire correspondre des chaînes avec des parties ajoutées, mais pas les faire correspondre si elles ont des parties ajoutées différentes ? Par exemple, si j'ai une liste de noms et que je dois les faire correspondre aux noms de ma base de données :

| 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 |

J'ai d'abord essayé de faire une correspondance exacte, et si je ne la trouve pas, je continue de supprimer un caractère à la fin de la chaîne de nom externe et j'essaie à nouveau de faire la correspondance jusqu'à ce qu'un seul enregistrement corresponde à ma base de données.

Cette technique correspond aux premier et troisième exemples du tableau ci-dessus, mais le problème est qu'elle correspond également au deuxième exemple car le programme supprime un caractère à chaque fois jusqu'à ce que le mot Mathew entier soit supprimé, puis il trouve une correspondance, qui est une fausse correspondance dans ce cas.

Toutes suggestions pour que je puisse faire une correspondance exacte uniquement ou une correspondance mais n'avoir que la partie supplémentaire du nom d'un côté, mais ne pas les faire correspondre s'ils ont tous les deux deux parties différentes du nom.

Vous pouvez utiliser SQL ou Python pour résoudre ce problème.

Merci d'avance pour votre aide.

P粉676588738
P粉676588738

répondre à tous (1)
P粉145543872

Cela est très inefficace et nécessitera une analyse complète du tableau.

SET @name_str = 'David James Malan Neeko'; SELECT * FROM tbl WHERE name LIKE CONCAT(@name_str, '%') OR @name_str LIKE CONCAT(name, '%') ORDER BY name = @name_str DESC, name LIKE CONCAT(@name_str, '%') DESC;
Chaîne de recherche commençant par

ORDER BY子句中的第一个表达式将首先对完全匹配进行排序,然后第二个表达式将对以整个搜索字符串开头的name进行排序,然后是以name.

Évidemment, vous pouvez passer la chaîne de recherche directement en paramètre au lieu d'utiliserSET @name_str = '...';.

Voici quelques exemplesdb<>fiddle.

    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!