2012-04-25 18 views
14

के लिए SQL में दो कॉलम एकत्र करें मेरे SQL में, मैं खोज करने के लिए WHERE और LIKE क्लॉज का उपयोग कर रहा हूं। हालांकि, मैं दो कॉलम की एक संयुक्त मूल्य पर खोज करने के लिए की जरूरत है - first_name और last_name:WHERE क्लॉज

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

यह काम नहीं करता है, लेकिन मैंने सोचा मैं इन पंक्तियों के साथ कुछ कैसे कर सकता है?

मैं दो स्तंभों द्वारा खोज अलग ऐसा करने की तरह की कोशिश की है:

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

लेकिन जाहिर है कि काम नहीं करेगा, क्योंकि खोज क्वेरी के इन दो स्तंभों की संयुक्त मूल्य है।

उत्तर

20

उपयोग निम्नलिखित:

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

नोट इसी क्रम में इस उद्देश्य से, प्रथम नाम और अंतिम नाम के रूप में काम करने के लिए छंटनी की होना चाहिए, जैसे वे आगे या पीछे व्हाइटस्पेस नहीं होने चाहिए। डेटाबेस में डालने से पहले PHP में तारों को ट्रिम करना बेहतर है। लेकिन क्या आप भी इस तरह आपकी क्वेरी में ट्रिमिंग शामिल कर सकते हैं: John Smith, Johnny Smithy, Johnson Smithison, क्योंकि प्रतिशत चिह्न:

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

मैं कुछ इस तरह के साथ शुरू होगा केवल LIKE खंड के अंत में है। '%John%' के विपरीत जो aaaaJohnaaaa, aaaSmithaaa जैसे परिणाम लौटा सकता है।

+0

यह एक concat पहले से चल रहा है और उसके बाद की तुलना से अधिक कुशल होना चाहिए। –

संबंधित मुद्दे