在表格中我存储了人名,我想使用通配符来检查是否找到了学生姓名的一部分。我尝试使用通配符,如果条件值长度比数据库中已有的值短,例如
,则可以使用WHERE name LIKE '%Stu%'
我有一个名叫'Stuart'的人,这将会返回一行,但是如果说我错过了输入学生的姓名并且它比存储的更长,即:
WHERE name LIKE '%Stuarfd%'
在那里我将得不到任何结果。反正只有匹配字符串的一部分吗?
答案 0 :(得分:0)
您是否尝试过使用SOUNDEX?
WHERE SOUNDEX(name) = SOUNDEX('Stuarf')
更多信息:
答案 1 :(得分:0)
你可能想要的是Levenshtein距离,也称为编辑距离。这是将一个字符串更改为另一个字符串所需的编辑次数。
SQLite通过名为Spellfix1的扩展实现此功能,该扩展可用here。特定功能是spellfix1_editdist ()
。 Levenshtein距离对于部分匹配并不是那么有用。我们的想法是能够输入" Stuarf"并找到" Stuart",因为他们很接近。