sql >> Base de Datos >  >> RDS >> Mysql

Sql donde la cláusula no funciona

ACTUALIZACIÓN:OP tenía caracteres de nueva línea invisibles (\ n) en su conjunto de datos. @EternalPoster (y yo) supusimos que Trim eliminaría todos los espacios en blanco , pero Documentación de MySql Trim especifica los espacios iniciales y finales solamente .

Esto es lo que hice:

-- 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'
;

y esto es lo que obtuve:

Entonces, en mi caso, veo que el script funciona como se esperaba.

¿Qué tiene de diferente tu caso? Mi instalación es una configuración bastante predeterminada. El hecho de que Like '%google.com%' funciona en su conjunto de datos sugiere un par de cosas. La gente ya ha sugerido TRIM , porque la expresión Me gusta coincidiría con caracteres invisibles (espacios, tabuladores, retrocesos, nulos). MySQL tiene un operador separado REGEXP para expresiones regulares, por lo que no parecería ser que . el carácter se usa como comodín, pero podría valer la pena echarle un vistazo.

Cree una base de datos vacía e intente ejecutar mi script anterior. ¿Obtienes el mismo resultado que yo?