মাইএসকিউএল কনক্যাট শর্তের সাথে নির্বাচন করুন


116

আমি এটি মনে মনে সংকলন করার চেষ্টা করছি .. আমার প্রথম নাম এবং লাস্টনাম ক্ষেত্রগুলি সহ একটি টেবিল রয়েছে এবং আমার কাছে "বব জোনস" বা "বব মাইকেল জোন্স" এবং বেশ কয়েকটি অন্যান্যর মতো স্ট্রিং রয়েছে।

জিনিসটি হ'ল, উদাহরণস্বরূপ আমার কাছে বব প্রথম নাম এবং মাইকেল জোনস পদবি

তাই আমি চেষ্টা করছি

SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast 
  FROM users 
 WHERE firstlast = "Bob Michael Jones"

তবে এটি অজানা কলাম "ফার্স্টলাস্ট" বলেছে .. কেউ কি দয়া করে সহায়তা করতে পারেন?

উত্তর:


177

আপনার দেওয়া উপাধিগুলি ক্যোয়ারীর আউটপুট দেওয়ার জন্য - সেগুলি ক্যোয়ারির মধ্যেই পাওয়া যায় না।

আপনি হয় এক্সপ্রেশন পুনরাবৃত্তি করতে পারেন:

SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast 
FROM users
WHERE CONCAT(firstname, ' ', lastname) = "Bob Michael Jones"

বা ক্যোয়ারী মোড়ানো

SELECT * FROM (
  SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast 
  FROM users) base 
WHERE firstLast = "Bob Michael Jones"

5
এই উত্তর হিসাবে সেট করা ছিল।
অরুণ কিল্লু

কিছুক্ষণ পরে, আমি বলতে পারি যে আমি এটিকে আরও ভাল উত্তর হিসাবে ব্যবহার করতে সম্মত
অ্যালেক্স কে

@ অ্যালেক্স আপনি যদি এটি করতে চান তবে একটি আলাদা উত্তর নির্বাচন করতে পারেন
জিপেটাস

1
অনেকগুলি সারি সহ একটি বিশাল টেবিলের জন্য, "কোয়েরি মোড়ক" সংস্করণটি ব্যবহার করা বুদ্ধিমানের কাজ হবে বলে আমি মনে করি।
ফান্দি সুসান্টো

34

এটা চেষ্টা কর:

SELECT * 
  FROM  (
        SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast 
        FROM users 
    ) a
WHERE firstlast = "Bob Michael Jones"

আমার জন্য নিখুঁত কাজ করে, অনেক অনেক ধন্যবাদ :) এবং কোডটিতে টেক্সট দেওয়ার জন্য ধন্যবাদ, আমি ভুলে
অ্যালেক্স কে


8

CONCAT_WS () ব্যবহার করুন।

SELECT CONCAT_WS(' ',firstname,lastname) as firstlast FROM users 
WHERE firstlast = "Bob Michael Jones";

প্রথম যুক্তিটি বাকী যুক্তিগুলির জন্য পৃথককারী।


সুতরাং এটি হওয়া উচিতCONCAT_WS(' ', ..
অ্যালেক্স কে

7

চেষ্টা করুন:

SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast 
  FROM users 
WHERE CONCAT(firstname, ' ', lastname) = "Bob Michael Jones"

সাব-সিলেক্ট হিসাবে আপনি কোয়েরি না করে আপনার উয়ার্স ফার্স্টলাস্ট ক্যোয়ারির ক্লজটিতে উপলব্ধ নেই।


7

CONCATএক্সপ্রেশনটি পুনরাবৃত্তি করার বা সাবকিউরিগুলি ব্যবহার করার বিকল্প রয়েছে । আপনি এই HAVINGধারাটি ব্যবহার করতে পারেন , যা কলামের নামগুলি স্বীকৃতি দেয়।

SELECT 
  neededfield, CONCAT(firstname, ' ', lastname) AS firstlast 
FROM
  users 
HAVING firstlast = "Bob Michael Jones"

এখানে একটি কার্যকারী এসকিউএল ফিডল


নিশ্চিত হওয়া যায় না কেন এই ধারাটিতে বেশি মনোযোগ জোগানো হচ্ছে না। এটি ভার্চুয়াল কলাম নামের প্রত্যক্ষ ব্যবহারের অনুমতি দেয়। থাকার ধারাটিতে কি বেশি ওভারহেড রয়েছে?
পল

@ পল ক্যোয়ারী কার্যকর করার শেষে ক্লজ প্রয়োগ করেছে যাতে আমরা এটি সামগ্রিক ফাংশনগুলিতে (MAX () এর মতো শর্ত নির্ধারণ করতে পারি। অনুচ্ছেদে থাকা সূচি ব্যবহার করতে পারে না তাই এটি ধীর।
মোস্তফা বটানপুর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.