কেস বনাম ইসনুল বনাম কোলেসেস


9

আমি কেবল এসকিউএল সার্ভার 2012 পরীক্ষার জন্য ডকুমেন্টেশনের মাধ্যমে পড়ছি এবং আমি নিম্নলিখিত বিষয়টি দেখেছি:

কেস বনাম ইসনুল বনাম কোলেসেস

এখন, আমি প্রত্যেকটি কীভাবে ব্যবহার করতে হয় তা জানি তবে কখন ব্যবহার করতে হবে তা আমি জানি না । দয়া করে কিছু শরীর স্পষ্ট করতে পারে। ধন্যবাদ।

পুনশ্চ. অনুগ্রহ করে আমাদের পরীক্ষার প্রশ্নগুলির জন্য একটি ট্যাগ থাকতে পারে?


2
COALESCEপ্রসারিত হয় CASEতবে স্পষ্টতই একটি CASEবিবৃতিতে আপনি নিজেকে লেখেন আপনি WHENশর্তে আরও নমনীয় হতে পারেন । জন্য ISNULLবনাম COALESCE সম্পর্কিত / নকল?
মার্টিন স্মিথ

সম্পর্কিত আমি সম্মত কিন্তু না ডুপ। মন্তব্যের জন্য ধন্যবাদ :)
স্টুয়ার্ট ব্ল্যাকার

উত্তর:


10

ISNULL - শুধুমাত্র এসকিউএল সার্ভারে উপলব্ধ। একে অপরের সাথে একটি নুল মান পরীক্ষার এবং প্রতিস্থাপনের অনুমতি দেয়।

COALESCE - এএনএসআই মান। আর্গুমেন্টের পরিবর্তনশীল দৈর্ঘ্যের সেটটিতে প্রথম অ-নাল মান সহ পরীক্ষার জন্য এবং কোনও নুল মান প্রতিস্থাপনের অনুমতি দেয়। এটিতে গুরুত্বপূর্ণ যে ডেটা টাইপ প্রবণতা উপাদানগুলি note

-- Conversion failed when converting the varchar value 'a' to data type int
SELECT COALESCE(CAST(NULL AS varchar(10)), 'a', 1) 
-- Returns 1
SELECT COALESCE(CAST(NULL AS varchar(10)), 1, 'a')

উপরের উদাহরণে, 'এ' প্রথম অ-নাল মান তবে অক্ষরের ডেটাতে পূর্ণসংখ্যার চেয়ে কম অগ্রাধিকার থাকে।

আইএসএনএলএল বনাম কুলসেসের মধ্যে আরেকটি বিবেচনা হ'ল ইসনুলের ফলাফল নুল নয় বলে দৃ determined়প্রতিজ্ঞ হয়েছে যখন একটি কলের কলের ফলাফলটি ন্যূনযোগ্য। জেআরজে'র পোস্টটি অসম্পূর্ণ () <> কোয়েলস () দেখুন যদিও এটি একটি তুচ্ছ জিনিস মনে হতে পারে, ক্যোয়ারী অপ্টিমাইজার কলামের শূন্যতার ভিত্তিতে বিভিন্ন পরিকল্পনা করতে পারে।

আপনি আপনার isnull / coalesce / কেস এক্সপ্রেশনগুলির nullability সহজেই এটি dmo sys.dm_exec_describe_first_result_set এর মাধ্যমে চালিয়ে দেখতে পারেন

-- these all evaluate to not nullable (is_nullable = 0) because I'm not clever enough
DECLARE @sql nvarchar(4000) = N'
SELECT ISNULL(NULL, 1) AS I
, COALESCE(NULL, 1) AS C
, CASE WHEN NULL = NULL THEN NULL ELSE 1 END AS C1
'
SELECT
    DMO.*
FROM
    sys.dm_exec_describe_first_result_set(@sql, NULL, 0) AS DMO

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


এত তাড়াতাড়ি সম্পূর্ণ উত্তরের জন্য ধন্যবাদ। আমার ধারণা ছিল না যে অগ্রাধিকারের ক্রমটি কীভাবে গুরুত্বপূর্ণ COALESCE। আবারও ধন্যবাদ
স্টুয়ার্ট ব্ল্যাকার

1
CASEপ্রযুক্তিগতভাবে একটি অভিব্যক্তি, কোনও ফাংশন নয়।
ypercubeᵀᴹ

1

ISNULL আপনাকে 1 টি পুনঃব্যবস্থা ফেরত দেওয়ার সম্ভাব্যতা দেয়, COALESCE একটি মানের মধ্যেই সীমাবদ্ধ নয় যেমন COALESCE(v1,v2,v3,v4,v5) ভি 5 এর একমাত্র মান যদি নন তবে এটি ফিরে আসবে

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