更新:OPのデータセットには非表示の改行文字(\ n)が含まれていました。 @EternalPoster(および私)は、Trimがすべての空白を削除すると想定していました 、ただしMySQLTrimドキュメント 先頭と末尾のスペースのみを指定します 。
これが私がしたことです:
-- for http://stackoverflow.com/questions/27203169/sql-query-not-work-for-google-com
-- and http://stackoverflow.com/questions/27202157/sql-where-clause-not-working
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
-- --------------------------------------------------------
DROP TABLE IF EXISTS `sites`;
--
-- structure for table `sites`
--
CREATE TABLE IF NOT EXISTS `sites` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`site` varchar(32) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
--
-- data for table `sites`
--
INSERT INTO `sites` (`id`, `site`) VALUES
(1, 'xyz.com'),
(2, 'google.com'),
(3, 'example.com');
--
-- select google
--
SELECT *
FROM sites
WHERE site = 'google.com'
;
--
-- select google
--
SELECT *
FROM sites
WHERE site = 'google.com'
;
これが私が得たものです:
したがって、私の場合、スクリプトは期待どおりに機能していることがわかります。
あなたのケースの違いは何ですか?私のインストールはかなりデフォルトの設定です。Like '%google.com%'
データセットで動作することは、いくつかのことを示唆しています。人々はすでにTRIM
を提案しています 、Like式は非表示の文字(スペース、タブ、バックスペース、ヌル)と一致するためです。 MySQLには、別の演算子REGEXP
があります。 正規表現の場合、.
ではないようです。 文字はワイルドカードとして使用されていますが、一見の価値があるかもしれません。
空のデータベースを作成し、上記のスクリプトを実行してみてください。私と同じ結果が得られますか?