2012-11-16 4 views
0

내 액세스 데이터베이스에서 here의 Levenshtein 거리를 사용하고 있습니다. 함수가 필드 목록에있을 때 SELECT 문에서 함수를 사용합니다. 예컨대 : field는 텍스트 열 (액세스-에서 VARCHAR)입니다어디에서 VBA 기능을 사용합니까?

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

. 지금, 나는

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

같은 조건으로 어디 절에있는 기능을 사용하려면 그러나 모든 액세스 날 "유형의 충돌"라는 오류가 있습니다. Levenshtein(field, 'Saturday') 대신 cons30에서 distance을 사용할 때도 마찬가지입니다.

levenshtein-function은 Public Function Levenshtein(string1 As String, string2 As String) As Long으로 정의됩니다. 그래서 내가 뭘 잘못 했니?

+1

'field'는 어떤 데이터 형입니까? 그것은 DataTime 데이터 유형입니까? – HK1

+0

나는 'Field'는 Text (Access-VarChar)라고 말한 것을 잊어 버렸다. – rollstuhlfahrer

답변

0

테이블에 null 값이 있다고 생각합니다. 이 쿼리를 대신 사용해 볼 수 있습니까?

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

아니면 (string1 as Variant, string2 as Variant)Levenshtein 함수를 정의하고 반환 확인 할 수 있습니다 (이것은 쿼리에 where field is not null 조건이 충분하지 않다고 함수 어쨌든 평가하려고한다 모양) string1 또는 string2가 null 인 경우는 null :

If IsNull(string1) or IsNull(string2) Then 
    Levenshtein = Null 
    Exit Function 
End If 
+0

테스트를 위해 월요일까지 기다려야합니다. – rollstuhlfahrer

+0

힌트를 보내 주셔서 감사합니다. 나는 결코 'null'값을 확인하지 않았을 것이다. – rollstuhlfahrer

관련 문제