在数据库的某一列中查找最长的匹配子序列table
Finding longest matching subsequence in a certain column of database table
我想编写一个 UDF,将字符串作为来自用户的参数。然后该函数必须在 table.
的该列中找到最长的可能匹配 sequences/sub 序列
例如,
Table-姓名 --> 患者
列名--> FirstName
现在,如果用户将字符串 Johni
传递给此函数,并且 FirstName
列有 'Johna'、JohnDoe
、Johi,
Simran`
该函数应return一个table,其值按匹配的递减顺序排列,即
- 约翰娜
- JohnDoe
- 乔希
和 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
我想编写一个 UDF,将字符串作为来自用户的参数。然后该函数必须在 table.
的该列中找到最长的可能匹配 sequences/sub 序列例如, Table-姓名 --> 患者 列名--> FirstName
现在,如果用户将字符串 Johni
传递给此函数,并且 FirstName
列有 'Johna'、JohnDoe
、Johi,
Simran`
该函数应return一个table,其值按匹配的递减顺序排列,即
- 约翰娜
- JohnDoe
- 乔希
和 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
到 selectSELECT FirstName
FROM yourtable
WHERE Difference('Johni', FirstName) >= 3
ORDER BY Difference('Johni', FirstName) DESC