2016-03-20 9 views
1

私のデータベースであるSQLで使用可能で、DB:MySQLは行が戻されないが、すべてのオフの単語が

/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */; 
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */; 
/*!40101 SET @[email protected]@COLLATION_CONNECTION */; 
/*!40101 SET NAMES utf8 */; 

CREATE TABLE IF NOT EXISTS `oc_artists_tags` (
    `artists_tag_id` int(11) NOT NULL AUTO_INCREMENT, 
    `artist_id` int(11) NOT NULL, 
    `artist_tag` varchar(50) NOT NULL, 
    PRIMARY KEY (`artists_tag_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=203 ; 

INSERT INTO `oc_artists_tags` (`artists_tag_id`, `artist_id`, `artist_tag`) VALUES 
(1, 113, 'ke$ha'), 
(2, 113, 'kesha'), 
(3, 113, 'keshha'), 
(4, 113, 'ke'), 
(5, 113, 'ha'); 

そして、私のSQLは次のとおりです。

SELECT * FROM `oc_artists_tags` 
WHERE `artist_tag` LIKE '%ke$ha%' 
    AND `artist_tag` LIKE '%kesha%' 
    AND `artist_tag` LIKE '%keshha%' 
    AND `artist_tag` LIKE '%ke%' 
    AND `artist_tag` LIKE '%ha%' 

私はこれを得たこのコードを実行すると:

MySQL returned an empty result set (i.e. zero rows). (Query took 0.0005 sec)** 

なぜですか?問題はどこだ?

+1

'OR'、' OR'、 'OR'は' artist_tag'がこれらの全てを同時に扱うことはできませんが、 ''%ke $ ha% ''OR''%kesha% ''などのようになります。 – RiggsFolly

答えて

2

あなたは述語をORする必要があります。ANDを使用することにより

SELECT * 
FROM `oc_artists_tags` 
WHERE `artist_tag` LIKE '%ke$ha%' OR 
     `artist_tag` LIKE '%kesha%' OR 
     `artist_tag` LIKE '%keshha%' OR 
     `artist_tag` LIKE '%ke%' OR 
     `artist_tag` LIKE '%ha%' 

は言ってようなものです:レコードがkeshaようke$haのようなタグを持つ私を得る、など

Demo here

+0

私のSQLは真です。 5つのレコードがあります。 –

+0

@DilaraAliyevaはい、WHERE句で指定した文字列のうち、** all **と一致するものはありません。 –

+0

はい私はそれを得た!ありがとうございました! –

関連する問題