বাম বহিরাগত যোগদান থেকে ফিরে আসা ডিফল্ট নাল মানগুলি প্রতিস্থাপন করুন


99

আমার কাছে একটি মাইক্রোসফ্ট এসকিউএল সার্ভার ২০০৮ ক্যোয়ারী রয়েছে যা বাম বাহিরের জোড় ব্যবহার করে তিনটি টেবিল থেকে ডেটা ফেরত দেয়। অনেক সময়, দ্বিতীয় এবং তৃতীয় টেবিলগুলিতে কোনও ডেটা থাকে না এবং তাই আমি একটি নাল পাই যা আমি মনে করি বাম বাহ্যিক জোড়ার জন্য ডিফল্ট। নির্বাচিত বিবৃতিতে ডিফল্ট মানগুলি প্রতিস্থাপনের কোনও উপায় আছে কি? আমার একটি কাজ আছে যাতে আমি একটি টেবিলের পরিবর্তনশীলতে নির্বাচন করতে পারি তবে এটি কিছুটা নোংরা অনুভব করে।

SELECT iar.Description, iai.Quantity, iai.Quantity * rpl.RegularPrice as 'Retail', 
iar.Compliance FROM InventoryAdjustmentReason iar
LEFT OUTER JOIN InventoryAdjustmentItem iai  on (iar.Id = iai.InventoryAdjustmentReasonId)
LEFT OUTER JOIN Item i on (i.Id = iai.ItemId)
LEFT OUTER JOIN ReportPriceLookup rpl on (rpl.SkuNumber = i.SkuNo)
WHERE iar.StoreUse = 'yes'

আমি যদি কোয়ান্টিটি এবং রেগুলারপ্রিসকে সম্ভব হয় তবে শূন্যে ডিফল্ট করা সম্ভব to


দ্রষ্টব্য: এই পোস্টের কয়েকটি উত্তর এমএসএফটি স্কেল-সার্ভার ব্যতীত অন্যান্য ডাটাবেসের সাথে ডিল করে, যার ফলে এই উত্তরটি সেই অন্যান্য প্রসঙ্গে অনুসন্ধানের ফলাফলের পৃষ্ঠাগুলিতে প্রদর্শিত হবে।
dreftymac

উত্তর:


140

যে হিসাবে সহজ

IsNull(FieldName, 0)

বা আরও সম্পূর্ণরূপে:

SELECT iar.Description, 
  ISNULL(iai.Quantity,0) as Quantity, 
  ISNULL(iai.Quantity * rpl.RegularPrice,0) as 'Retail', 
  iar.Compliance 
FROM InventoryAdjustmentReason iar
LEFT OUTER JOIN InventoryAdjustmentItem iai  on (iar.Id = iai.InventoryAdjustmentReasonId)
LEFT OUTER JOIN Item i on (i.Id = iai.ItemId)
LEFT OUTER JOIN ReportPriceLookup rpl on (rpl.SkuNumber = i.SkuNo)
WHERE iar.StoreUse = 'yes'

4
আমি জানতাম এটি সহজ হতে হবে তবে কোনও কারণে, এটি কীভাবে করা যায় তা সম্পর্কে আমাকে অবরুদ্ধ করা হয়েছিল। ধন্যবাদ
ব্রেট বিম

46
যদি এটি মাইএসকিউএল হয় তবে ইসনুলকে 'আইএফএনএলএল' দিয়ে প্রতিস্থাপন করা উচিত। ধন্যবাদ
ধনুশকা

17
পোস্টগ্র্যাসকিউএল-তে এটি "COALESCE" বলে মনে হচ্ছে । মাইএসকিউএল-এর জন্য ম্যানুয়াল পৃষ্ঠাটি এখানে রয়েছে: "আইএফএনএলএল" । মান সম্পর্কে নিশ্চিত নয়।
ডেভিড টনহোফার

4
ডিবি 2-তে উত্তরটি 'সুইচ ডেটাবেসস' বলে মনে হচ্ছে।
rtf

4
এসকিউএলাইটের জন্য এটি হবে IFNULL
চিন্তন শাহ

12

ক্ষেত্রে MySQLবা SQLiteসঠিক কীওয়ার্ডটি IFNULL(নয় ISNULL) not

 SELECT iar.Description, 
      IFNULL(iai.Quantity,0) as Quantity, 
      IFNULL(iai.Quantity * rpl.RegularPrice,0) as 'Retail', 
      iar.Compliance 
    FROM InventoryAdjustmentReason iar
    LEFT OUTER JOIN InventoryAdjustmentItem iai  on (iar.Id = iai.InventoryAdjustmentReasonId)
    LEFT OUTER JOIN Item i on (i.Id = iai.ItemId)
    LEFT OUTER JOIN ReportPriceLookup rpl on (rpl.SkuNumber = i.SkuNo)
WHERE iar.StoreUse = 'yes'

5

মাইএসকিউএল

COALESCE(field, 'default')

উদাহরণ স্বরূপ:

  SELECT
    t.id,
    COALESCE(d.field, 'default')
  FROM
     test t
  LEFT JOIN
     detail d ON t.id = d.item

এছাড়াও, আপনি একাধিক কলামগুলি তাদের COALESCENULL দ্বারা ফাংশনটি পরীক্ষা করতে ব্যবহার করতে পারেন । উদাহরণ স্বরূপ:

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