カテゴリ:

文字列とバイナリ関数 (マッチング/比較)

EDITDISTANCE

2つの入力文字列間のレーベンシュタイン距離を計算します。これは、ある文字列を別の文字列に変換するために必要な単一文字の挿入、削除、または置換の数です。

注釈

その他のメトリックスのいくつか(例:ダメラウ・レーベンシュタイン距離)とは異なり、文字の転置は考慮されません。

構文

EDITDISTANCE( <expr1> , <expr2> )

使用上の注意

  • EDITDISTANCE 関数の実行時間は、入力文字列の長さの積に比例します。

    パフォーマンスを向上させるために、Snowflakeでは4096文字以下の入力文字列を使用することをお勧めします。

照合の詳細

No impact. In languages where the alphabet contains digraphs or trigraphs (such as "Dz" and "Dzs" in Hungarian), each character in each digraph and trigraph is treated as an independent character, not as part of a single multi-character letter.

結果は、文字列の照合仕様ではなく、文字列内の文字のみに基づいています。

SELECT s, t, EDITDISTANCE(s, t), EDITDISTANCE(t, s) FROM ed;

----------------+-----------------+--------------------+--------------------+
       s        |        t        | editdistance(s, t) | editdistance(t, s) |
----------------+-----------------+--------------------+--------------------+
                |                 | 0                  | 0                  |
 Gute nacht     | Ich weis nicht  | 8                  | 8                  |
 Ich weiß nicht | Ich wei? nicht  | 1                  | 1                  |
 Ich weiß nicht | Ich weiss nicht | 2                  | 2                  |
 Ich weiß nicht | [NULL]          | [NULL]             | [NULL]             |
 Snowflake      | Oracle          | 7                  | 7                  |
 święta         | swieta          | 2                  | 2                  |
 [NULL]         |                 | [NULL]             | [NULL]             |
 [NULL]         | [NULL]          | [NULL]             | [NULL]             |
----------------+-----------------+--------------------+--------------------+