sql >> Databáze >  >> RDS >> Mysql

Sql kde klauzule nefunguje

AKTUALIZACE:OP měl ve své datové sadě neviditelné znaky nového řádku (\n). @EternalPoster (a já) předpokládali, že Trim odstraní všechny mezery , ale Dokumentace MySql Trim určuje pouze mezery na začátku a na konci .

To je to, co jsem udělal:

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

a tohle jsem dostal:

Takže v mém případě vidím, že skript funguje podle očekávání.

V čem se váš případ liší? Moje instalace je poměrně výchozí nastavení. Skutečnost, že Like '%google.com%' práce na vaší datové sadě naznačuje několik věcí. Lidé již navrhli TRIM , protože výraz Like by odpovídal neviditelným znakům (mezery, tabulátory, zpětné mezery, nuly). MySQL má samostatného operátora REGEXP pro regulární výrazy, takže se nezdá, že by to byl . znak se používá jako zástupný znak, ale to by mohlo stát za pozornost.

Vytvořte prázdnou databázi a zkuste spustit můj skript výše. Máte stejný výsledek jako já?



  1. Zkopírujte položky z treeview tkinter

  2. postgresql spoušť na sloupci tsvector get ERROR:sloupec neexistuje

  3. Jak rozdělit výsledný sloupec do více sloupců

  4. Oracle provést okamžité neprovedení bez jakékoli chyby