O texto de pesquisa SQL começa com

Aprender SQL. Tenha um simples jogo de mesa com título de campo. Quero procurar com base no título. Se eu tiver um jogo chamado Age of Empires III: Dynasties, e eu usar LIKE com o parâmetro Age of Empires III: Dynasties, Tudo funciona bem, a pesquisa devolve o registo com esse nome. Mas se eu procurar com Age of Empires III, não devolve nenhum registo:

SELECT * from games WHERE (lower(title) LIKE 'age of empires III');
Isto não devolve nada. Devo usar outra coisa em vez de LIKE?

Estou a usar o MySQL.

 25
sql
Author: 0xSina, 2013-02-16

3 answers

SELECT * from games WHERE (lower(title) LIKE 'age of empires III');

A consulta acima não retorna nenhuma linha porque você está procurando por' age of empires III ' string exata que não existe em nenhuma linha.

Por isso, para corresponder com este texto com um texto diferente que tenha 'age of empires' como sub-texto, terá de usar '%your string goes here%'

Mais em MySQL string comparision

Tens de experimentar isto.
SELECT * from games WHERE (lower(title) LIKE '%age of empires III%');

Assim como '%age of empires III%' Isto irá procurar por qualquer sub-estrutura correspondente nas suas linhas, e irá aparecer nos resultados.

 33
Author: mr_eclair, 2013-02-16 07:52:57

Tens de usar a placa especial % :

SELECT * from games WHERE (lower(title) LIKE 'age of empires III%');
 22
Author: misha, 2013-02-16 07:45:53

COLLATE UTF8_GENERAL_CI vai funcionar como caso de ignorar. Uso:

SELECT * from games WHERE title COLLATE UTF8_GENERAL_CI LIKE 'age of empires III%';

Ou

SELECT * from games WHERE LOWER(title) LIKE 'age of empires III%';
 3
Author: Dhwani, 2013-02-16 07:45:21