1

私は Oracle と MySql を使用しているので、両方のコードで何か答えがあれば教えてください。

問題:

USersという1つのテーブルに2つの列があります

列#1= 名前列#2= UCNames

このリストには、さまざまなソースからの名前が含まれていますが、次のように部分的に一致しています。

名前


アレックス・ジョーンズ・マーフェックス

UCNames


アレックス・ジョンズ マイク・マーフェックス

両方の列を比較し、次の属性に基づいて一致を見つけたい:

最初の4 つの文字最後の 4 つの単語を検索し、次の名前の新しい列に保存します: verifiyed

ありがとう

4

2 に答える 2

0

@asantaballa による回答に基づいていますが、MySQL SUBSTRING_INDEX 関数を使用しています:-

WHERE SUBSTRING_INDEX(Col1, ' ', 1) = SUBSTRING_INDEX(Col2, ' ', 1)
AND SUBSTRING_INDEX(Col1, ' ', -1) = SUBSTRING_INDEX(Col2, ' ', -1)

または、最初の 4 文字と最後の 4 単語を大雑把にチェックするには:-

WHERE SUBSTRING(Col1, 1, 4) = SUBSTRING(Col2, 1, 4)
AND SUBSTRING_INDEX(Col1, ' ', -4) = SUBSTRING_INDEX(Col2, ' ', -4)
于 2013-10-02T13:08:38.060 に答える
0

これにより、文字列の最初の単語が得られます

Substring(Col,1,(Locate (' ',Col + ' ')-1)) First

これにより、文字列の最後の単語が得られます

Reverse(Substring(Reverse(Col), 1,  Locate(' ',Reverse(Col)) - 1)) Last

だからあなたの比較は

Where 
    Substring(Col1,1,( Locate(' ',Col1 + ' ')-1)) 
    = Substring(Col2,1,( Locate(' ',Col2 + ' ')-1))
  And
    Reverse(Substring(Reverse(Col1), 1,  Locate(' ',Reverse(Col1)) - 1))
    = Reverse(Substring(Reverse(Col2), 1,  Locate(' ',Reverse(Col2)) - 1))

私は、あなたがやろうとしていることに対して、もう少し努力すればより安全だと思われる言葉を使いました. 4 文字を維持したい場合は、Locate を 4 に置き換えます。

于 2013-10-02T11:45:41.343 に答える