মাইএসকিউএল-এ কীভাবে টের্নারি শর্তসাপেক্ষ অপারেটরটি প্রয়োগ করা যায়


90

আমি মাইএসকিউএলে টার্নারি শর্তসাপেক্ষ অপারেটরটি প্রয়োগ করতে চাই। আমার একটি টেবিল রয়েছে যাতে একটি ফিল্ড আইডি বিদ্যমান। এর মান শূন্য হতে পারে। আমি এর idমতো ত্রৈমাসিকিক শর্তাধীন বিন্যাসে প্রদর্শন করতে চাই:

select id = id == null ? 0 : id;

এটি কি মাইএসকিউএলে সম্ভব?


উত্তর:


151

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

select if(Id is null, 0, id) as Id;

4
কোন লজ্জা নেই এটি লজ্জাজনক। আপনি শুধু প্রথম মান যা সত্য থেকে equates পেতে চান, আপনার জন্য চেক করতে nullবা ''এবং হয়ত এমনকি 0। মাইএসকিউএল কখনও কখনও কিছুটা দুশ্চিন্তা হয়
ক্রোনোকলি

53

ডকুমেন্টেশন আপনার বন্ধু; আপনার এটি পড়া উচিত!

এটা বলে:

IFNULL(expr1,expr2)

যদি expr1না হয় NULL,IFNULL() ফিরে আসে expr1; অন্যথায় এটি ফিরে আসে expr2

এবং তারপর উদাহরণ প্রচুর। এটি তুলনার সাথে একটি ত্রৈমাসিক শর্তসাপেক্ষে সমানNULL দ্বিতীয় অপারেন্ড হিসাবে তুলনা এবং তুলনা বিষয়টির ; এটি চিহ্ন ?এবং ব্যবহার করতে না ঘটায়: আপনাকে সেখানে পাওয়ার জন্য এটি কোনও কিছুর সাথে সত্যই প্রাসঙ্গিক

সুতরাং, আপনার ক্ষেত্রে:

SELECT IFNULL(`id`, 0) FROM `table`

আপনি যদি তিনটি অপারেন্ডকে স্পষ্টভাবে সরবরাহ করতে মরিয়া হন (কেন ?!), তারপরে স্যুইচ করুন IF:

SELECT IF(`id` IS NULL, 0, `id`) FROM `table`

4
+1, তবে প্রশ্নের উত্তর দিতে:CASE WHEN id IS NULL THEN 0 ELSE id END
মাইকেল ক্রেলিন - হ্যাকার

@ মাইকেল ক্রেলিন-হ্যাকার: একই কথা, না? এবং IFNULLপরিশ্রম হয়।
অরবিট

@ মাইকেল ক্রেলিন-হ্যাকার: ওহ, আমি এটি পেয়েছি।
অরবিটে লাইটনেস রেস

অবশ্যই, কেবল
তিন্নি

আমার ক্ষেত্রে, এর IFপরিবর্তে IFNULLবা এর জন্য আমাকে ব্যবহার করা দরকার COALESCEকারণ আমি ডেটাটি অন্য কোনও বিক্রেতার ডাটাবেসে স্থানান্তরিত করছি এবং নন-নাল মানগুলি আমদানি করতে চাই না, কেবল এটিকে জেনেরিক স্ট্যাটাস হিসাবে ব্যাখ্যা করি। SELECT IF(a.cancellationReason IS NOT NULL, 'C', 'A')) as appointment_statusআমার জন্য কাজ কর.
অ্যাডাম এলসোডনেই

22

দুটি উপায় রয়েছে যে আপনি টর্নারি অপারেটর হিসাবে একই যুক্তি প্রয়োগ করতে পারেন:

  1. ব্যবহার IFফাংশনটি , যেমন।IF(expression, true result, false result)
  2. CASEএক্সপ্রেশন ব্যবহার করুন , যেমন।

    CASE WHEN expression THEN <true result> ELSE <false_result> END
    

আপনি যখন NULL পরীক্ষা করছেন তখন আপনি IFNULLবা COALESCEফাংশনগুলি ব্যবহার করতে পারেন , যেমন।

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