2010-12-27 12 views
0

私は近くの名前を含むフィールドを持つテーブルを持っています。これらの地域の中には、2つ以上の単語を持つ名前があります。 3文字以下の単語のリストを取得するにはどうしたらよいですか?例えばMySQLで3文字以下の単語を取得する

=何もしない、唯一の1つの単語
ゴールデン湖=何もしない、唯一の2つの単語ゴールド=エキスの
湖」 "

本質的に私は 'ゴミ'の単語のリストを作りたいメタフォンの文章を作成するときに削除する。

+0

これはMySQLでは難しいでしょう。正規表現の実装では、特定のフィールドが特定の正規表現と一致する行だけを選択できます。したがって、MySQLの新しいリストを生成するフィールドの一部を抽出することはできません。そして、たとえ可能であっても、あなたが望むものを正確に実行するためのルックアライメントが必要であり、POSIX正規表現はそれをサポートしていません。 –

答えて

3
SELECT 'Lake of gold' RLIKE '[[:<:]].+[[:>:]].+[[:<:]].{1,3}[[:>:]].+[[:<:]].+[[:>:]]' 

残念ながら、MySQLは、パターンのみを抽出していない、正規表現を一致させることができます。 MySQLでフィルタリングを行い、スクリプト側で抽出する必要があります。

0
SELECT * FROM mytable WHERE mycolumn REGEXP "[[:alnum:]]+[[:space:]]+[[:alnum:]]{1,3}[[:space:]]+[[:alnum:]]+"; 

は、他の2つの単語の間に少なくとも1文字の単語を3文字まで含むすべてのエントリを検索します。

MySQLで直接単語を抽出することはできませんが、関連する行がフィルタリングされます。別の手順で抽出を行う必要があります。

関連する問題