মাইএসকিউএল যদি শূন্য না হয় তবে 1 টি প্রদর্শন করুন, অন্যথায় 0 প্রদর্শন করুন


104

আমি এখানে একটু ডিসপ্লে জটিলতার সাথে কাজ করছি। আমি নিশ্চিত যে কোনও আইএফ / ইএলএসই সামর্থ্য আমি কেবল উপেক্ষা করছি।

আমার কাছে দুটি টেবিল রয়েছে যা আমি জিজ্ঞাসা করছি (গ্রাহক, ঠিকানা)। প্রথমটির মূল রেকর্ড রয়েছে তবে দ্বিতীয়টির বামে যোগ দিতে বা রেকর্ড থাকতে পারে।

ঠিকানা সারণীতে কোনও রেকর্ড না থাকলে আমি একটি শূন্য প্রদর্শন করতে চাই। এবং আমি কেবল 1 প্রদর্শন করতে চাই, যদি কোনও রেকর্ড বিদ্যমান থাকে।

আমি এখন পর্যন্ত যা চেষ্টা করেছি:

SELECT c.name, COALESCE(a.addressid,0) AS addressexists
FROM customers c
LEFT JOIN addresses a ON c.customerid = a.customerid
WHERE customerid = 123

এই প্রথম উদাহরণ এটি না। তবে আমি কলের ভুল ব্যবহার করতে পারি।

কিছু উপস্থিত থাকলে আমি কীভাবে 0 টি, নাল এবং 1 টি প্রদর্শন করতে পারি?


উত্তর:


211

পরিবর্তে COALESCE(a.addressid,0) AS addressexists, ব্যবহার করুন CASE:

CASE WHEN a.addressid IS NOT NULL 
       THEN 1
       ELSE 0
END AS addressexists

বা সরল:

(a.addressid IS NOT NULL) AS addressexists

এটি কাজ করে কারণ মাইএসকিউএল এবং হিসাবে TRUEপ্রদর্শিত হয় ।1FALSE0



17

আপনি যদি সি / সি ++ থেকে এসে এই কাজটি করার প্রত্যাশা করেন তবে সাবধানতা অবলম্বন করুন:

select if(name, 1, 0) ..

এমনকি 'নাম' নুল না হলেও সি-এর বিপরীতে, একটি মিথ্যা শর্তটি এখনও ট্রিগার করে এবং উপরের বিবৃতিটি 0 প্রদান করে Thus সুতরাং আপনাকে স্পষ্টভাবে NULL বা খালি স্ট্রিং পরীক্ষা করতে হবে:

 select if(name is null or name = '', 0, 1)

উপরে পিএস ইউজেনের উদাহরণটি সঠিক , তবে আমি এই বিষয়টিকে স্পষ্ট করতে চেয়েছিলাম কারণ এটি আমাকে অবাক করে দিয়েছিল।


16
SELECT 
    c.name, 
    CASE WHEN a.addressid IS NULL THEN 0 ELSE 1 END AS addressexists
FROM customers c
LEFT JOIN addresses a ON c.customerid = a.customerid
WHERE customerid = 123

2

WHERE ব্যতীত অন্য একটি পদ্ধতি, এটি চেষ্টা করুন ..

খালি এবং NULL উভয় মান নির্বাচন করবে

SELECT ISNULL(NULLIF(fieldname,''))  FROM tablename

এটি যদি শূন্য স্ট্রিং হয় তবে এটি বাতিল হয়ে যাবে, তারপরেও সত্য হয়ে উঠুন।


এছাড়াও দরকারী: টেবিলের নাম থেকে IFNULL (ক্ষেত্রের নাম, "1") নির্বাচন করুন;
পডটেক.ইও

1

আপনি মাইএসকিউএল এর সর্বশেষতম সংস্করণে একটি আইএফ স্টেটমেন্ট ব্যবহার করতে পারেন।

IF(expr,if_true_expr,if_false_expr)

অর্থাৎ,

SELECT name, IF(ISNULL(name), 'robot', 'human') AS type
FROM visitors

0

যদি টিএসকিউএল এর মধ্যে থাকে তবে আপনি চেষ্টা করতে পারেন:

SELECT IIF(a.addressid IS NULL, 0, 1) AS addressexists

এসকিউএল সার্ভারের কাজ করা উচিত

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.