我在Access数据库中使用距离here的Levenshtein距离。当函数在字段列表中时,使用SELECT-Statement中的函数。 e.g:
SELECT field, Levenshtein(field, 'Saturday')
FROM table
其中field
是文本列(Access-VarChar)。现在,我想将where子句中的函数用作
SELECT field, Levenshtein(field, 'Saturday') as distance
FROM table
WHERE (Levenshtein(field, 'Saturday') < 5)
但所有Access都给我一个错误,说“与类型冲突”。在consition中使用distance
而不是Levenshtein(field, 'Saturday')
时也是如此。
levenshtein函数定义为Public Function Levenshtein(string1 As String, string2 As String) As Long
。那我做错了什么?
答案 0 :(得分:1)
我认为你的表中有一些空值。你可以尝试这个查询吗?
SELECT field, Levenshtein(field, 'Saturday') as distance
FROM table
WHERE (Levenshtein(nz(field, ""), 'Saturday') < 5)
(看起来查询中的where field is not null
条件不够,无论如何都要尝试评估该函数。)
或者您可以将Levenshtein
函数定义为(string1 as Variant, string2 as Variant)
,并确保在string1或string2为null时返回null:
If IsNull(string1) or IsNull(string2) Then
Levenshtein = Null
Exit Function
End If