sql >> データベース >  >> RDS >> Sqlserver

SQL ServerのDIFFERENCE()関数のしくみ

    この記事は、DIFFERENCE()を理解するのに役立つことを目的としています。 関数。SQLServer、Azureなどで使用できるT-SQL関数です。

    DIFFERENCE()を理解するための鍵 関数は、Soundexがどのように機能するか(またはSQL Serverのコンテキストでは、SOUNDEX()がどのように機能するかを理解することです。 機能は動作します)。これは、DIFFERENCE()が原因です。 関数は、2つの文字列間のSoundex値の差を返します。

    Soundexの値は4文字の長さです。 2つの単語が同じように聞こえる場合、それらは同じ4文字のSoundex値を共有します。それらが類似しているように聞こえる場合(ただし同じではない場合)、Soundex値は一部の文字を共有している可能性がありますが、すべてではありません。たとえば、Soundex値には、同じ2つの文字と、異なる2つの文字が含まれている場合があります。 2つの単語の発音が完全に異なる場合、それぞれのSoundex値の文字はどれも同じにはなりません。

    DIFFERENCE() 関数は、0の範囲の値を返します 4を介して 。この値は、Soundex値の同じ文字数を表します。 0 類似性が弱いかまったくないことを示し、4 強い類似性または同じ値を示します。

    構文

    まず、構文は次のとおりです。

    DIFFERENCE ( character_expression , character_expression )

    示されているように、この関数は2つの引数を受け入れます。各文字式のSoundexコードが比較され、結果が返されます。

    例–完全一致

    両方の文字列が同じように聞こえる(つまり、Soundex値が同じである)場合の例を次に示します。

    SELECT DIFFERENCE('Two','Too');

    結果:

    4

    結果は4です 、これは可能な限り高い値です。これは、2つの文字列の間に強い類似性があることを意味します(Soundex値に関する限り)。

    4の番号がどこにあるのか疑問に思っている場合 から来た、次のコードを見てください:

    SELECT 
        SOUNDEX('Two') AS Two,
        SOUNDEX('Too') AS Too;

    結果:

    Two   Too 
    ----  ----
    T000  T000

    この例では、SOUNDEX() 関数は、各単語のSoundexコードを返すために使用されます。結局のところ、両方の単語は同じSoundexコード(T000)を持っています )。また、Soundexコードの4文字はすべて同じであるため、DIFFERENCE() 4を返します 。

    例–類似性が低い

    文字列の類似性が低い場合の動作例を次に示します。

    SELECT DIFFERENCE('Tea','Coffee');

    結果:

    2

    結果は2です 、真ん中にあります。文字列はまったく同じようには聞こえませんが、いくつかの類似点があります。

    前の例と同様に、次のコードを実行することで、この結果がどこから来たのかを確認できます。

    SELECT 
        SOUNDEX('Tea') AS Tea,
        SOUNDEX('Coffee') AS Coffee;

    結果:

    Tea   Coffee
    ----  ------
    T000  C100

    したがって、これらの単語間で同じであるSoundex文字は2つだけであることがわかります。したがって、DIFFERENCE() 結果は2

    例–類似性なし

    文字列の類似性が弱いかまったくない場合の動作例を次に示します。

    SELECT DIFFERENCE('Tree','Captivated');

    結果:

    0

    結果は0です 、これは、文字列の類似性が非常に弱いか、まったくないことを意味します。

    そして、これら2つの単語のSoundexコードは次のとおりです。

    SELECT 
        SOUNDEX('Tree') AS Tree,
        SOUNDEX('Captivated') AS Captivated;

    結果:

    Tree  Captivated
    ----  ----------
    T600  C131

    したがって、この場合、どの文字も同じではないため、DIFFERENCE() 0の結果 。


    1. MySQLで文字列を16進数に変換する方法– HEX()

    2. notifyDataSetChanged()のWinDeath

    3. Javaクラスからテーブルタイプとしてパラメータなしでプロシージャを呼び出す方法

    4. 初心者向けのSQLCREATETABLE