2

我在我的 Access 数据库中使用Levenshtein 距离。当函数在字段列表中时,在 SELECT 语句中使用函数有效。例如:

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 给我的所有错误都是“与类型冲突”。distance在 consition 中使用而不是Levenshtein(field, 'Saturday').

levenshtein 函数定义为Public Function Levenshtein(string1 As String, string2 As String) As Long。那么我做错了什么?

4

1 回答 1

2

我认为您的表中有一些空值。你可以试试这个查询吗?

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
于 2012-11-16T15:02:24.190 回答