UPDATE:OP hatte unsichtbare Zeilenumbruchzeichen (\n) in seinem Datensatz. @EternalPoster (und ich) nahmen an, dass Trim alle Leerzeichen entfernen würde , aber MySql Trim-Dokumentation gibt nur Leerzeichen am Anfang und am Ende an .
Folgendes habe ich getan:
-- 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'
;
und das habe ich bekommen:
In meinem Fall sehe ich also, dass das Skript wie erwartet funktioniert.
Was ist an Ihrem Fall anders? Meine Installation ist eine ziemlich standardmäßige Einrichtung. Die Tatsache, dass Like '%google.com%'
Arbeiten an Ihrem Datensatz schlägt ein paar Dinge vor. Leute haben bereits TRIM
vorgeschlagen , da der Like-Ausdruck mit unsichtbaren Zeichen (Leerzeichen, Tabulatoren, Backspaces, Nullen) übereinstimmen würde. MySQL hat einen separaten Operator REGEXP
für reguläre Ausdrücke, also scheint es nicht so zu sein, dass .
Zeichen wird als Platzhalter verwendet, aber das könnte einen Blick wert sein.
Erstellen Sie eine leere Datenbank und versuchen Sie, mein obiges Skript auszuführen. Erhalten Sie das gleiche Ergebnis wie ich?