我有一张表格,列有国家名单。说其中一个国家是'马其顿'
如果搜索“马其顿共和国”,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*)
但我不知道如何扭转它。
附注:表格中的国家/地区名称始终是国家/地区名称的简短版本
答案 0 :(得分:8)
只需反转操作符(并修复语法)
Select * from country
where 'Republic of Macedonia' LIKE CONCAT('%',country.Name,'%')
答案 1 :(得分:7)
您可以使用CHARINDEX
。
Select * from country
where CHARINDEX(country.Name, 'Republic of Macedonia') > 0
答案 2 :(得分:1)
对于SQLite,可以将表(mytable)中的substring
(mysubstring列)与任意较大的测试字符串进行比较:
select * from mytable where instr('Somewhere substring is here', mytable.mySubstring) > 0