2012-05-11 74 views
10

Tôi có một bảng chứa danh sách các quốc gia. Giả sử một trong những quốc gia này là 'Macedonia'Đảo ngược SQL LIKE

Truy vấn SQL nào sẽ trả lại bản ghi 'Macedonia' nếu tìm kiếm được thực hiện cho 'Cộng hòa Macedonia'?

Tôi tin rằng trong LINQ nó sẽ là một cái gì đó giống như

var countryToSearch = "Republic of Macedonia"; 

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

Bây giờ điều gì sẽ tương đương với SQL cho các truy vấn trên được?

Đã có nó được theo chiều ngược lại (ví dụ: cơ sở dữ liệu có phiên bản dài của tên quốc gia được lưu trữ) truy vấn dưới đây sẽ làm việc:

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

nhưng tôi không thấy làm thế nào tôi có thể đảo ngược nó.

Side lưu ý: tên các quốc gia trong bảng sẽ luôn luôn là phiên bản ngắn của tên nước

+0

Bạn đang sử dụng cơ sở dữ liệu nào? – Oded

+0

Tôi đang sử dụng SQL Server – jaja

+0

Cô ấy muốn một cái gì đó như thế này: http://sqlfiddle.com/#!3/f657d/11 – user1135357

Trả lời

7

Bạn có thể sử dụng CHARINDEX cho việc này.

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

cảm ơn .. hoạt động tốt :) – jaja

7

Chỉ cần đảo ngược các nhà điều hành (và sửa chữa các cú pháp)

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

+1: Ai đã bỏ phiếu này? * (Nó nên chỉ định MySQL, như op đã không chỉ định RDBMS nào, nhưng nó chắc chắn hoạt động! VÀ có thể thích nghi với SQL Server ...) * – MatBailie

+1

Tôi đã viết câu trả lời, trước khi nó rõ ràng, rằng đó là MSSQL - có thể mọi người không tha thứ cho MySQL-ism. –