2012-05-11 19 views
10

Tengo una tabla con una lista de países. Digamos que uno de estos países es 'Macedonia'SQL reverse LIKE

¿Qué consulta SQL devolverá el registro 'Macedonia' si se realiza una búsqueda para 'República de Macedonia'?

Creo que en LINQ sería algo así como

var countryToSearch = "Republic of Macedonia"; 

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

Ahora lo que sería el equivalente de SQL para la consulta anterior ser?

si hubiera sido al revés (es decir, la base de datos tiene la versión larga del nombre del país almacenada) por debajo de la consulta debería funcionar:

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

pero no veo cómo puedo revertirla.

Nota al margen: los nombres de países en la mesa siempre será la versión corta de nombres de países

+0

¿Qué base de datos está usted utilizando? – Oded

+0

estoy usando SQL Server – jaja

+0

Ella quiere algo como esto: http://sqlfiddle.com/#!3/f657d/11 – user1135357

Respuesta

7

Usted puede utilizar CHARINDEX para esto.

Select * from country 
where CHARINDEX(country.Name, 'Republic of Macedonia') > 0 
+0

gracias ... eso funciona genial :) – jaja

7

Sólo invertir el operador (y corregir la sintaxis)

Select * from country 
where 'Republic of Macedonia' LIKE CONCAT('%',country.Name,'%') 
+1

+1: ¿Quién votó a favor? * (Debe especificar MySQL, ya que el op no ha especificado qué RDBMS, pero seguramente funciona! Y se puede adaptar a SQL Server ...) * – MatBailie

+1

Escribí la respuesta, antes de que fuera claro, que se trata de MSSQL - tal vez las personas no perdonen el MySQL-ismo. –