3

たくさんの単語と文字列を含むデータベース テーブルがあります。(現在、300K を超えるエントリがありますが、増加しています。)パターンに適合する値のみを取得する最良の方法は何でしょうか? テーブルは次のとおりです。

apples
oranges
abba
car
real
tipi
riot
tidy

パターン CVCV (ConsonantVowelConsonantVowel) のみを取得するにはどうすればよいでしょうか。それともCVVC、LLLL(文字*4)など?次のように、さまざまなパターンで列を作成できます。

word: real
patterns: LLLL,CVVC,LVVC,LVVL,LVLC,LLVC,LLLC,LVLL,CLLC,...

「SELECT * FROM table WHERE word LIKE $pattern」でデータベースを検索するのですが、何か良い方法はないかと考えていました。

4

2 に答える 2

2

CVCV:

SELECT 'cara' REGEXP '[bcdfghjklmnpqrstvwxz][aeiouy][bcdfghjklmnpqrstvwxz][aeiouy]';

true

SELECT 'abba' REGEXP '[bcdfghjklmnpqrstvwxz][aeiouy][bcdfghjklmnpqrstvwxz][aeiouy]';

false

于 2012-04-26T20:26:51.987 に答える
-2

4文字の単語のみを探している場合は、正規表現条件を使用するのはかなり簡単です。たとえば、母音と子音の順序を気にしない場合は、次のように簡単です。

SELECT * 
FROM yourTable
WHERE yourField REGEXP '^[a-z]{4}$'

これが言っているのは、az の 4 文字で始まり az で終わる単語を見つけることだけです。

****** これは、このパターンを使用する小文字にのみ適用されます。大文字が心配な場合は、次のいずれかを実行できます。

1) LOWER(yourField) REGEXP '^[a-z]{4}$'

OR

2) yourField REGEXP '^[a-zA-Z]{4}$'

これに似たものが欲しいが、私があなたに与えたものとは違う場合は、正規表現を読んでください。これはかなり良いスターター リファレンスです: http://dev.mysql.com/doc/refman/5.1/en/regexp.html

正規表現は非常に強力で、文字列操作の多くのインスタンスで非常に役立つため、とにかく正規表現について少し読むことをお勧めします。

于 2012-04-26T21:41:47.373 に答える