mysql 类似SQL的搜索字符串以

hsgswve4  于 11个月前  发布在  Mysql
关注(0)|答案(7)|浏览(83)

学习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。

ifsvaxew

ifsvaxew1#

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%'中,这将搜索行中任何匹配的子字符串,并显示在结果中。

0g0grzrc

0g0grzrc2#

您需要使用**%**:

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

字符串

daupos2t

daupos2t3#

除了使用%age of empires III小写为age of empires iii,所以你的查询应该是:

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

字符串

ruarlubt

ruarlubt4#

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

ibrsph3r

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%'; --包含

lyfkaqu1

lyfkaqu16#

如果你使用“like”操作符而不使用%,那么like就像等于(=)一样工作,这意味着你的代码将如下所示:

select * from games where lower(title)= 'age of empires iii';

字符串
所以它没有找到任何匹配的数据,那么就没有任何返回。
但是如果你只想比较标题的一部分和你的参数,你应该使用%符号。你可以在不同的位置使用它,这取决于数据库的逻辑。
通常它用在参数的开始和结束,代码是这样的:

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


这将搜索标题列中的值,即使在开头或结尾或两者都有不匹配的字符。(在本例中,值为“帝国时代III”)(在本例中,标题是“Age of Empires III:Dynasties”),并且此条件为真,因此将返回此行和任何其他具有相同大小写的行。

khbbv19g

khbbv19g7#

在SQL中,%-%匹配任何介于两者之间的字符。select * from table_name where column_name line '%kk%';将匹配任何包含'ss'的字符串,例如:

  • llssll
  • ssll如果你想匹配字符串的开头,你应该使用'ss%'代替。select * from table_name where column_name line 'ss%';这个查询将只返回ssll。

相关问题