2

テーブル「OG」に列「names」と「ids」があり、最後の文字が異なり、合計編集距離が2である名前を見つけたいと考えています。これまでのところ、私は持っています:

SELECT
z1.names as names1, z2.names as names2, z1.ids, z2.ids
FROM (SELECT t.names, SUBSTRING(t.names for Length(t.names-1) AS newnames
from "OG" t) z1, (SELECT r.names, SUBSTRING(r.names for Length(r.names-1) AS
newnames1 FROM "OG" r) z2
WHERE levenshtein(z1.newnames, z2.newnames1) = 2 AND z1.id != z2.id

残念ながら、これは最後の文字が異なることを保証しません. 修正のためのアイデアはありますか?

4

1 に答える 1

2

最後の文字も確認してください。

WHERE levenshtein(z1.newnames, z2.newnames1) = 2 AND z1.id != z2.id
AND substring(z1.names,Length(z1.names)) <> substring(z2.names,Length(z2.names))

SUBSTRING(t.names for length(t.names)-1)文字列が空 (null ではない) の場合、クエリでの使用は失敗することに注意してください。

于 2011-04-03T21:45:46.257 に答える