OPDATERING:OP havde usynlige nylinjetegn (\n) i sit datasæt. @EternalPoster (og jeg) formodede, at Trim ville fjerne alt mellemrum , men MySql Trim-dokumentation angiver førende og efterfølgende kun mellemrum .
Dette er, hvad jeg gjorde:
-- 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'
;
og dette er hvad jeg fik:
Så i mit tilfælde ser jeg scriptet fungere som forventet.
Hvad er anderledes ved dit tilfælde? Min installation er en temmelig standardopsætning. Det faktum, at Like '%google.com%'
fungerer på dit datasæt foreslår et par ting. Folk har allerede foreslået TRIM
, fordi Like-udtrykket ville matche usynlige tegn (mellemrum, tabulatorer, backspaces, null). MySQL har en separat operatør REGEXP
for regulære udtryk, så det ser ikke ud til at være .
karakter bliver brugt som et jokertegn, men det kan være værd at se.
Opret en tom database og prøv at køre mit script ovenfor. Får du det samme resultat som jeg?