ইসনুল () এর জন্য পোস্টগ্রিএসকিউএল সমতুল্য কী?


254

এমএস এসকিউএল-সার্ভারে, আমি এটি করতে পারি:

SELECT ISNULL(Field,'Empty') from Table

তবে PostgreSQL এ আমি একটি সিনট্যাক্স ত্রুটি পাই। আমি কীভাবে ISNULL()কার্যকারিতা অনুকরণ করব ?


1
না আপনি এমএসএসকিউএলে এটি করতে পারবেন না। এই কোডটি সংকলন করবে না। ISNULLদুটি আর্গুমেন্ট নেয় এবং দ্বিতীয়টি প্রথমটি দেয় nullঅন্যথায় প্রথমটি।
GSerg

@ জিসার্গ, আপনি ঠিক বলেছেন। এটি স্থির।
বায়রন হুইটলক

Gserg এবং বায়রন হ্যাঁ আপনি এখানে উদাহরণ আমার পিসিতে নির্বাচন isnull (a.FechaEntregada, '') থেকে পরীক্ষা হিসেবে dbo.Amonestacion থেকে দেখতে পারেন msdn.microsoft.com/en-us/library/ms184325.aspx
জুয়ান

উত্তর:


452
SELECT CASE WHEN field IS NULL THEN 'Empty' ELSE field END AS field_alias

বা আরও বুদ্ধিমান:

SELECT coalesce(field, 'Empty') AS field_alias

49
জন্য +1 coalesce। (পিএস আপনি এমএস এসকিউএল সার্ভারেও এটি করতে পারেন))
অ্যালিসন আর।

2
যদিও শূন্য হ'ল ব্যবহার করার জন্য অন্যান্য কেস রয়েছে, তাই উভয়ই জানা ভাল।
কাইল বাট

30
আমি মনে করি এটি লক্ষ্য করার মতো যে এটি coalesceএসকিউএল স্ট্যান্ডার্ডের সাথে isnullএকটি এমএস-নির্দিষ্ট ফাংশন যা মূলত coalesceমাত্র দুটি পরামিতি সহ।
GSerg

4
কোলেসেস () প্রকারের প্রচারকেও সঠিকভাবে পরিচালনা করে (ঠিক ইউনিয়ন নির্বাচন যেমন করে), যখন ইসনুল () না করে।
এরিক

2
এটি উল্লেখ করার মতো যে ISNULL এবং COALESCE এক নয়। ইসনুল ফলাফল-ধরণের আর্গুমেন্ট 1 এর ধরণের দিকে বাধ্য করে, যখন কোয়েলস প্রতিটি যুক্তির জন্য সংশ্লিষ্ট প্রকারগুলি ব্যবহার করে। আপনি যদি কেবল ইসলুলকে কোলেসিস সহ সন্ধান করেন এবং প্রতিস্থাপন করেন তবে আপনি সম্ভাব্যভাবে প্রচুর ত্রুটি পেতে পারেন ...
স্টেফান স্টেইগার

75

COALESCE()পরিবর্তে ব্যবহার করুন:

SELECT COALESCE(Field,'Empty') from Table;

এটি অনেকটা কার্যকারিতা সরবরাহ করার মতো ISNULL, যেমন কাজ করে। কোলেসেস তালিকার প্রথম নাল মানটি প্রদান করবে। এভাবে:

SELECT COALESCE(null, null, 5); 

5 ফেরত, যখন

SELECT COALESCE(null, 2, 5);

রিটার্ন 2

কোলেসিস প্রচুর পরিমাণে যুক্তি নেবে। সর্বোচ্চ কোনও ডকুমেন্টেড নেই। আমি এটি পরীক্ষা করব 100 টি যুক্তি এবং এটি সফল হয়েছে। এটি বেশিরভাগ পরিস্থিতিতে রয়েছে plenty


24

আমি কীভাবে ISNULL () কার্যকারিতা অনুকরণ করব?

SELECT (Field IS NULL) FROM ...

4
এটি ইসনুলের সঠিক কার্যকারিতা অনুকরণ করে, এটি কেন হ্রাস পাবে তা নিশ্চিত নয়
স্মৃতিচারণ করুন

অবশ্যই প্রশ্নের উত্তরের উত্তর। এই অভিব্যক্তিটি ইসনুল () এর সম্পূর্ণ সমতুল্য। COALESCE () এটি জানতে খুব স্মার্ট এবং আকর্ষণীয় তবে এটি বন্ধ থাকাকালীন এটি কোনও ISNULL () সম্পাদন করতে পারে না।
Skrol29

16
আমি জানি না ISNULLআপনি কমেন্টাররা কী উল্লেখ করছেন, তবে field IS NULLএকটি বুলিয়ান মান দেয়, যখন ISNULLএসকিউএল সার্ভারের মতো কাজ করে COALESCE: এটি অ- NULLমানগুলির মধ্যে একটি ফেরত দেয় । এই উত্তর মারাত্মক ভুল। ডকুমেন্টেশন দেখুন: ISNULL
jpmc26

10
আমি সন্দেহ করি যে এই মন্তব্যকারীরা মাইএসকিউএল ব্যবহারকারী যারা প্রশ্নটি শুরু করে বুঝতে পারেন নি যে "এমএস এসকিউএল সার্ভারে ..." মাইএসকিউএল এর একটি ISNULL () ফাংশন রয়েছে যা একক যুক্তি নেয় এবং 0 বা 1 প্রদান করে। টি এসকিউএল এর সংস্করণ নেয় দুটি যুক্তি এবং COALESCE বা ওরাকল এর এনভিএলের মতো আচরণ করে।
ডেভিড নোহা

1
গ্রেটভোভান, এটি মূল পোস্টারটির উদ্দেশ্য ছিল বা না হোক, আমি বিশ্বাস করি যে লোকেরা যা চায় তা হ'ল "ক্ষেত্রটি নাল কিনা আমি কীভাবে তা পরীক্ষা করব" এর জবাব এটি প্রয়োজনীয়ভাবে নয়, "ইসনুল ফাংশনটি ঠিক কীভাবে কাজ করে" not আমার ক্ষেত্রে এটি ছিল এবং এই উত্তরটি তার জন্য উপযুক্ত।
ফ্রিম্যান হেলমথ

15

চেষ্টা করুন:

SELECT COALESCE(NULLIF(field, ''), another_field) FROM table_name

3
এটি পাঠ্য ক্ষেত্রটি শূন্য নয়, তবে 'খালি' অবস্থায় থাকে বলে এটি দুর্দান্ত।
souia

-9

নিম্নলিখিত ফাংশন তৈরি করুন

CREATE OR REPLACE FUNCTION isnull(text, text) RETURNS text AS 'SELECT (CASE (SELECT $1 "
    "is null) WHEN true THEN $2 ELSE $1 END) AS RESULT' LANGUAGE 'sql'

এবং এটি কাজ করবে।

আপনি বিভিন্ন প্যারামিটার ধরণের সাথে বিভিন্ন সংস্করণ তৈরি করতে পারেন।


28
দয়া করে, কেউ এই কাজ করবেন না। পরিবর্তে coalesce () ব্যবহার করুন যাতে আপনার ডিবিএ আপনাকে ঘৃণা করে না।
জর্দান

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