2

Access データベースでここからのレーベンシュタイン距離を使用しています。関数がフィールド リストにある場合、SELECT ステートメントで関数を使用すると機能します。例えば:

SELECT field, Levenshtein(field, 'Saturday')
FROM table

fieldText-Column (Access-VarChar) はどこにありますか。ここで、 where 句の関数を次のような条件として使用したいと思います

SELECT field, Levenshtein(field, 'Saturday') as distance
FROM table
WHERE (Levenshtein(field, 'Saturday') < 5)

しかし、Accessが私に与えるのは、「タイプとの競合」というエラーだけです。distanceの代わりに条件で使用する場合も同じですLevenshtein(field, 'Saturday')

レーベンシュタイン関数は として定義されPublic Function Levenshtein(string1 As String, string2 As String) As Longます。それで、私は何を間違えましたか?

4

1 に答える 1

2

テーブルに null 値がいくつかあると思います。代わりにこのクエリを試していただけますか?

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 に答える