単語のリストがあります。それらが「Apple」、「Orange」、および「Pear」であるとしましょう。データベースには次のような行があります。
------------------------------------------------
|author_id | content |
------------------------------------------------
| 54 | I ate an Apple for breakfast. |
| 63 | Going to the store. |
| 12 | Should I wear the orange shirt? |
------------------------------------------------
content
列にリストの1つ以上の単語が含まれているため、1行目と3行目を返すInnoDBテーブルのクエリを探しています。リスト内の単語ごとに1回テーブルにクエリを実行し、LIKEと%ワイルドカード文字を使用できることはわかっていますが、そのようなクエリメソッドが1つあるかどうか疑問に思っています。
編集:
このようなもの:
SELECT * FROM yourtable WHERE content LIKE '%Apple%' OR content LIKE '%orange%'
単語をループして、WHERE句の条件を作成できます。
例:
$words = array( 'Apple', 'orange' );
$whereClause = '';
foreach( $words as $Word) {
$whereClause .= ' content LIKE "%' . $Word . '%" OR';
}
// Remove last 'OR'
$whereClause = substr($whereClause, 0, -2);
$sql = 'SELECT * FROM yourtable WHERE' . $whereClause;
echo $sql;
SELECT * FROM yourtable WHERE content LIKE "%Apple%" OR content LIKE "%orange%"
MySQL(5.0バージョンだと思います)は、SQLで正規表現を使用する機能を追加しました。
チェックアウト: http://www.brainbell.com/tutorials/MySQL/Using_MySQL_Regular_Expressions.htm
SELECT author_id, content
FROM AuthorTableName
WHERE content REGEXP 'Apple|Orange|Pear'
ORDER BY author_id;