Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Sql where cláusula não está funcionando


ATUALIZAÇÃO:OP tinha caracteres de nova linha invisíveis (\n) em seu conjunto de dados. @EternalPoster (e eu) supus que Trim removeria todos os espaços em branco , mas Documentação do MySql Trim especifica espaços apenas à esquerda e à direita .

Isto é o que eu fiz:
-- 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'
;

e isso é o que eu tenho:



Então, no meu caso, vejo o script funcionando conforme o esperado.

O que há de diferente no seu caso?Minha instalação é uma configuração bastante padrão. O fato de Like '%google.com%' funciona em seu conjunto de dados sugere algumas coisas. O pessoal já sugeriu TRIM , porque a expressão Like corresponderia a caracteres invisíveis (espaços, tabulações, retrocessos, nulos). O MySQL tem um operador separado REGEXP para expressões regulares, então não parece que o . personagem está sendo usado como um curinga, mas isso pode valer a pena dar uma olhada.

Crie um banco de dados vazio e tente executar meu script acima. Você obtém o mesmo resultado que eu?