Recherche de la sous-séquence correspondante la plus longue dans une certaine colonne de la table de database

Je veux écrire un UDF qui prend une string comme paramètre de l'user. Ensuite, la fonction doit find les séquences / sous-séquences les plus longues possibles dans cette colonne de la table.

Par exemple, nom de la table -> Nom de la colonne patient -> Prénom

Maintenant, si l'user a passé une string, disons Johni à cette fonction et la colonne FirstName a 'Johna', JohnDoe , Johi, Simran`

La fonction doit renvoyer une table avec la valeur dans l'ordre décroissant de match

  1. Johna
  2. JohnDoe
  3. Johi

et Simran ne devrait pas être returnné. Je suis un peu ignorant de faire cette search dans les valeurs de la colonne.

Utiliser la fonction de Difference

 SELECT a,Difference('Johni', a) FROM (SELECT 'Johna' a UNION SELECT 'JohnDoe' UNION SELECT 'Johi' union select 'Simran') o where Difference('Johni', a)>=3 ORDER BY Difference('Johni', a) DESC 

Mise à jour: Pour sélectionner à partir de votre table

 SELECT FirstName FROM yourtable WHERE Difference('Johni', FirstName) >= 3 ORDER BY Difference('Johni', FirstName) DESC