搜索字符串之类的SQL以

时间:2013-02-16 07:41:08

标签: sql

学习SQL。有一个简单的桌面游戏与字段标题。我想根据标题进行搜索。如果我有一个名为Age of Empires III: Dynasties的游戏,并且我使用带有参数LIKE的{​​{1}},则一切正常,搜索会返回具有该名称的记录。但如果我使用Age of Empires III: Dynasties进行搜索,则不会返回任何记录:

Age of Empires III

这不会返回任何内容。我应该使用其他内容而不是SELECT * from games WHERE (lower(title) LIKE 'age of empires III'); 吗?

我正在使用MySQL。

4 个答案:

答案 0 :(得分:45)

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

上述查询不会返回任何行,因为您正在寻找“帝国时代III”的精确字符串,这在任何行中都不存在。

因此,为了与具有'age of empires'作为子字符串的不同字符串匹配此字符串,您需要使用'%your string goes here%'

更多关于mysql string comparision

你需要试试这个

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

在Like '%age of empires III%'中,这将搜索行中任何匹配的子字符串,并显示在结果中。

答案 1 :(得分:30)

您需要使用通配符

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

答案 2 :(得分:3)

COLLATE UTF8_GENERAL_CI将作为忽略案例。 用途:

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

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

答案 3 :(得分:0)

除了使用%之外,age of empires III的小写字母是age of empires iii,因此您的查询应该是:

select *
from games
where lower(title) like 'age of empires iii%'