2016-08-12 13 views
1

このSQLクエリをループ内で複数回実行するにはどうすればよいですか?各繰り返し中に単語「awesome」を別の単語に置き換えます。文字列の配列を格納してループする方法はありますか?SQLクエリをループして各繰り返し中に1つのパラメータを変更する方法

私のデータベースで「awesome」という言葉に言及しているレビューを見つけようとしていますが、これらを1つずつ実行して手作業で単語「awesome」を置き換えずにこのクエリを実行したいと考えています。

SELECT * FROM books WHERE review_text LIKE '%awesome%' 
+3

テンポラリテーブルにすべての文字列を入力し、同様のステートメントを使用してその一時テーブルをブックに結合します。 – Matt

答えて

2
CREATE TABLE SearchStrings (SearchString VARCHAR(50)); 

INSERT INTO SearchStrings (SearchString) 
VALUES ('string1'),('string2'); 

SELECT * 
FROM 
    books b 
    INNER JOIN SearchStrings s 
    ON b.review_text LIKE CONCAT(CONCAT('%',s.SearchString),'%') 
; 
0

単一のクエリでは、あなたはちょうどあなたがWHERE句でのORのリストに含まにしたい別の検索テキストのすべてを追加することができます。

SELECT * 
FROM books 
WHERE review_text LIKE '%awesome%' 
OR review_text LIKE '%blossum%' 
OR review_text LIKE '%possum%' 
OR review_text LIKE '%bean-soup%' 

あなたが検索する必要がある数だけ追加できます。これには、データベースへのラウンドトリップを節約できるという利点もあります。この単一のクエリは、複数の独立したクエリよりもはるかに高速になります。

関連する問題