0

私は2つの弦を持っています。両方の文字列で類似している文字の数まで知りたいのですが。

例:「xyzabc」、「xyzadh」としましょう。類似性が崩れている指標を与えることができる関数があるかどうか知りたいのですが。この場合、「xyza」までの文字列は同じであるため、4になります。文字列が「xyzabc」、「xymabc」の場合、結果は2になります。

select func('xyzabc', 'xyzwer');必要な答えを得るために使ってみたいと思います。Kinldyは、SQLに関数が存在するかどうかを知らせてくれました。

よろしくお願いします!!!

4

1 に答える 1

0

これを行う1つの方法は、正規表現を使用することです。これがアイデアです。regexp_substr()を使用します。この例では、正規表現は'xyzwer | xyzwe | xyzw | xyz | xy|x'になります。次に、一致する部分文字列の長さを測定します。つまり、文字列の1つを正規表現に変換する必要があります。

別の方法は、巨大なcaseステートメントを使用することです。

 (case when left(str1, 10) = left(str2, 10) then 10
       when left(str1, 9) = left(str2, 9) then 9
       ...
       when left(str1, 1) = left(str2, 1) then 1
       else 0
   end)

これは、10が最長の文字列であると想定しています。

于 2012-08-03T17:26:27.687 に答える