近隣の名前の束を含むフィールドを持つテーブルがあります。これらの近隣の一部には、2つ以上の単語が含まれる名前があります。3文字以下で、名前の途中に3つ以上の単語が含まれている単語のリストを取得するにはどうすればよいですか?
例えば:
湖 =何もしない、1語だけ
ゴールデン湖 =何もしない、2語だけ
金の湖 =「の」抽出
本質的には、メタフォン文を作成するときに削除する「ゴミ」の単語のリストを作成したいと思います。
SELECT 'Lake of gold' RLIKE '[[:<:]].+[[:>:]].+[[:<:]].{1,3}[[:>:]].+[[:<:]].+[[:>:]]'
残念ながら、MySQL
パターンを抽出することはできず、正規表現にのみ一致させることができます。MySQL
スクリプト側でフィルタリングと抽出を行う必要があります。
SELECT * FROM mytable WHERE mycolumn REGEXP "[[:alnum:]]+[[:space:]]+[[:alnum:]]{1,3}[[:space:]]+[[:alnum:]]+";
他の2つの単語の間に最大3文字の単語が少なくとも1つ含まれているすべてのエントリが検索されます。
MySQLで単語を直接抽出することはできませんが、これにより関連する行がフィルタリングされます。別のステップで抽出を行う必要があります。