13

我有一张桌子,上面有国家名单。假设这些国家之一是“马其顿”

如果搜索“马其顿共和国”,哪个 SQL 查询会返回“马其顿”记录?

我相信在 linq 中它会像

var countryToSearch = "Republic of Macedonia";

var result =  from c in Countries
              where countryToSearch.Contains(c.cName) 
              select c;

现在,上面查询的 SQL 等价物是什么?

如果反过来(即数据库存储了国家名称的长版本),下面的查询应该可以工作:

Select * from country
where country.Name LIKE (*Macedonia*)

但我不知道如何扭转它。

旁注:表中的国家名称将始终是国家名称的简称

4

3 回答 3

11

你可以用CHARINDEX这个。

Select * from country
where CHARINDEX(country.Name, 'Republic of Macedonia') > 0
于 2012-05-11T10:56:50.047 回答
9

只需反转运算符(并修复语法)

Select * from country
where 'Republic of Macedonia' LIKE CONCAT('%',country.Name,'%')
于 2012-05-11T10:51:52.207 回答
1

对于 SQLite,可以将表(mytable)中的substring (mysubstring 列)与任意更大的测试字符串进行比较:

select * from mytable where instr('Somewhere substring is here', mytable.mySubstring) > 0

于 2018-10-20T04:07:06.847 回答