SQL反向LIKE

时间:2012-05-11 10:49:06

标签: sql linq sql-server-2008-r2

我有一张表格,列有国家名单。说其中一个国家是'马其顿'

如果搜索“马其顿共和国”,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*)

但我不知道如何扭转它。

附注:表格中的国家/地区名称始终是国家/地区名称的简短版本

3 个答案:

答案 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