АКТУАЛИЗАЦИЯ:OP имаше невидими знаци за нов ред (\n) в своя набор от данни. @EternalPoster (и аз) предположихме, че Trim ще премахне всички бели интервали , но Документация за MySql Trim посочва само интервали в началото и края .
Ето какво направих:
-- 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 ще съответства на невидими знаци (интервали, табулатори, backspaces, нули). MySQL има отделен оператор REGEXP
за регулярни изрази, така че не изглежда, че .
символът се използва като заместващ знак, но това може да си струва да се разгледа.
Създайте празна база данни и опитайте да стартирате моя скрипт по-горе. Получавате ли същия резултат като мен?