2012-04-25 19 views
14

için SQL'de iki sütunu birleştirin SQL'de, bir arama yapmak için WHERE ve LIKE maddelerini kullanıyorum.WHERE maddesi

WHERE customers.first_name + customers.last_name LIKE '%John Smith%'

Bu işe yaramazsa, ama bu satırlar boyunca bir şey yapmak nasıl merak ettim: first_name ve last_name - Ancak, iki sütun kombine değerine arama yapmak gerekiyor?

WHERE customers.first_name LIKE '%John Smith%' OR customers.last_name LIKE '%John Smith%'

Ama arama sorgusu bu iki sütun kombine değer olduğundan besbelli ki çalışmaz:

Öyle gibi iki sütunla arama ayırmak yapmaya çalıştık. Aşağıdaki

cevap

20

Kullanım: amacıyla bu amaçlanan, ad ve soyadı olarak çalışması için bu

WHERE CONCAT(customers.first_name, ' ', customers.last_name) LIKE '%John Smith%' 

Not bunlar başında veya sonunda boşlukları içermez, diğer bir deyişle, kesilmiş olmalıdır. Veritabanına eklenmeden önce PHP'deki dizgileri düzeltmek daha iyidir. John Smith, Johnny Smithy, Johnson Smithison, çünkü yüzde işareti: Bu gibi sonuçlar döneceğini

WHERE customers.first_name LIKE 'John%' AND customers.last_name LIKE 'Smith%' 

:

WHERE CONCAT(TRIM(customers.first_name), ' ', TRIM(customers.last_name)) LIKE '%John Smith%' 
2

böyle bir şey ile başlamak istiyorum: Ama aynı zamanda böyle Sorgunuzun içine kırparak dahil edebilirsiniz yalnızca LIKE maddesinin sonundadır. '%John%''un aksine, aaaaJohnaaaa, aaaSmithaaa gibi sonuçlar döndürülebilir.

+0

bu ilk bir concat çalıştırıp karşılaştırarak daha verimli olmalıdır. –