学习SQL。有一个简单的表格游戏,带有字段标题。我想根据标题搜索。如果我有一个名为Age of Empires III: Dynasties
的游戏,我使用LIKE
和参数Age of Empires III: Dynasties
,一切正常,搜索返回该名称的记录。但是如果我使用Age of Empires III
搜索,它不会返回任何记录:
SELECT * from games WHERE (lower(title) LIKE 'age of empires III');
字符串
这不会返回任何东西。我应该使用其他东西来代替LIKE
吗?
我使用MySQL。
7条答案
按热度按时间ifsvaxew1#
字符串
上面的查询不返回任何行,因为你正在寻找'帝国时代III'确切的字符串,它不存在于任何行中。
因此,为了匹配这个字符串与不同的字符串,其中有
'age of empires'
作为子字符串,你需要使用'%your string goes here%'
更多关于mysql string comparision
你得试试这个
型
在Like
'%age of empires III%'
中,这将搜索行中任何匹配的子字符串,并显示在结果中。0g0grzrc2#
您需要使用**%**:
字符串
daupos2t3#
除了使用
%
,age of empires III
小写为age of empires iii
,所以你的查询应该是:字符串
ruarlubt4#
COLLATE UTF8_GENERAL_CI
将作为默认情况工作。用途:字符串
或
型
ibrsph3r5#
WHERE CustomerName LIKE 'a%' --查找任何以“a”开头的值
WHERE CustomerName LIKE '%a' --查找以“a”结尾的任何值
WHERE CustomerName LIKE '%or%' --查找在任何位置具有“or”的任何值
WHERE CustomerName LIKE 'r%' --查找第二个位置有“r”的任何值
WHERE CustomerName LIKE 'a_%' --查找任何以“a”开头且长度至少为3个字符的值
WHERE ContactName LIKE 'a%o' --查找以“a”开头并以“o”结尾的任何值
--不区分大小写2 SELECT * FROM my_table WHERE upper(my_column)LIKE 'SEARCHED %';--以
3 SELECT * FROM my_table WHERE upper(my_column)LIKE '%SEARCHED';--以
4 SELECT * FROM my_table WHERE upper(my_column)LIKE '%SEARCHED%'; --包含
lyfkaqu16#
如果你使用“like”操作符而不使用%,那么like就像等于(=)一样工作,这意味着你的代码将如下所示:
字符串
所以它没有找到任何匹配的数据,那么就没有任何返回。
但是如果你只想比较标题的一部分和你的参数,你应该使用%符号。你可以在不同的位置使用它,这取决于数据库的逻辑。
通常它用在参数的开始和结束,代码是这样的:
型
这将搜索标题列中的值,即使在开头或结尾或两者都有不匹配的字符。(在本例中,值为“帝国时代III”)(在本例中,标题是“Age of Empires III:Dynasties”),并且此条件为真,因此将返回此行和任何其他具有相同大小写的行。
khbbv19g7#
在SQL中,%-%匹配任何介于两者之间的字符。
select * from table_name where column_name line '%kk%';
将匹配任何包含'ss'的字符串,例如:select * from table_name where column_name line 'ss%';
这个查询将只返回ssll。