在数据库的某一列中查找最长的匹配子序列table

Finding longest matching subsequence in a certain column of database table

我想编写一个 UDF,将字符串作为来自用户的参数。然后该函数必须在 table.

的该列中找到最长的可能匹配 sequences/sub 序列

例如, Table-姓名 --> 患者 列名--> FirstName

现在,如果用户将字符串 Johni 传递给此函数,并且 FirstName 列有 'Johna'、JohnDoeJohi,Simran`

该函数应return一个table,其值按匹配的递减顺序排列,即

  1. 约翰娜
  2. JohnDoe
  3. 乔希

Simran 不应被 return 编辑。我对在列值中进行搜索一无所知。

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

更新: 从您的 table

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