SQL反向LIKE

jaj*_*aja 11 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;
Run Code Online (Sandbox Code Playgroud)

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

如果它是相反的方式(即数据库存储了国家名称的长版本),下面的查询应该工作:

Select * from country
where country.Name LIKE (*Macedonia*)
Run Code Online (Sandbox Code Playgroud)

但我不知道如何扭转它.

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

Ode*_*ded 9

你可以用CHARINDEX它.

Select * from country
where CHARINDEX(country.Name, 'Republic of Macedonia') > 0
Run Code Online (Sandbox Code Playgroud)


Eug*_*eck 8

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

Select * from country
where 'Republic of Macedonia' LIKE CONCAT('%',country.Name,'%')
Run Code Online (Sandbox Code Playgroud)

  • +1:谁拒绝了这个?*(它应该指定 MySQL,因为 op 没有指定哪个 RDBMS,但它肯定有效!并且可以适应 SQL Server...)* (2认同)
  • 我写了答案,在事情变得清楚之前,它是 MSSQL——也许人们对 MySQL 主义是不可原谅的。 (2认同)