এসএনকিউএল আইএনএনএলএল (), এনভিএল (), আইএফএনএলএল () বা কয়েলস () এর সমতুল্য


92

আমি আমার কোডে নিম্নলিখিত মত অনেকগুলি চেক এড়াতে চাই:

myObj.someStringField = rdr.IsDBNull(someOrdinal) 
                            ? string.Empty 
                            : rdr.GetString(someOrdinal);

আমি অনুভব করেছি যে আমি আমার জিজ্ঞাসাটি এমন কিছু করে নালাগুলির যত্ন নিতে পারি:

SELECT myField1, [isnull](myField1, '') 
FROM myTable1
WHERE myField1 = someCondition

আমি যদিও এসকিউএলাইট ব্যবহার করছি এবং এটি isnullফাংশনটি স্বীকৃত বলে মনে হচ্ছে না । আমিও কিছু সমতুল্য অন্যান্য ডাটাবেস স্বীকৃত বেশী চেষ্টা করেছি ( NVL(), IFNULL()এবং COALESCE()), কিন্তু SQLite তাদের কাউকে চিনতে মনে হচ্ছে না।

কারও কি কোনও পরামর্শ আছে বা এটি করার আরও ভাল উপায় সম্পর্কে জানেন। দুর্ভাগ্যক্রমে ডাটাবেসের সব ক্ষেত্রেই ডিফল্ট মান থাকে না। এছাড়াও, LEFT JOINকিছু ক্ষেত্রে আমার কয়েকটি ধারা ব্যবহার করা দরকার , যেখানে কিছু ক্ষেত্র ফিরে এসেছে তা শূন্য হবে কারণ LEFT JOINসারণীতে মিলের রেকর্ডটি বিদ্যমান থাকবে না।

উত্তর:


130

IFNULL, এখানে দেখুন: http://www.sqlite.org/lang_corefunc.html#ifnull

ফাংশন কাছাকাছি কোন বন্ধনী


বাহ এটি বর্গাকার বন্ধনী ছিল। তার জন্য ধন্যবাদ. আমাকে পাগল করে দিচ্ছিল যে ডকুমেন্টেশনটি বলেছিল এটি সমর্থিত (সেখানে সেখানেও সহাবস্থান রয়েছে), কিন্তু এটি কার্যকর হয়নি। সেই দিনগুলির একটি ...
জেসন ডাউন

4
আমি "ফাংশনটির আশেপাশে কোনও বন্ধনী নয়" সম্পর্কিত আপনার বিবরণটি অনুধাবন করেছি, তবে এই জাতীয় বিবৃতি দিয়ে এটি আপনার প্রাথমিক বক্তব্যের নীচে উদাহরণ রাখতে সহায়তা করবে।
পালসুইম

40

এটা চেষ্টা কর

ifnull(X,Y)  

যেমন

select ifnull(InfoDetail,'') InfoDetail; -- this will replace null with ''
select ifnull(NULL,'THIS IS NULL');-- More clearly....

ifnull()ফাংশন তার প্রথম অ শূন্য যুক্তি, বা শূন্য একটি কপি উভয় আর্গুমেন্ট শূন্য হয় ফেরৎ। Ifnull()অবশ্যই 2 টি যুক্তি থাকতে হবে। ifnull()ফাংশন সমতূল্য coalesce()দুই আর্গুমেন্ট সহ।


4
হ্যাঁ, আমি বুঝতে পেরেছিলাম যে এটি ifnullআমি চেয়েছিলাম ... আমার কেবল ব্যবহৃত বর্গাকার বন্ধনীগুলি ফেলে দেওয়ার দরকার ছিল।
জেসন ডাউন

@ হার্দিকদারজি কারন কিছু জনগণকে খুশি খুশী অ্যাডমিন "এই চেষ্টা করুন" শব্দটি দেখেছিল এবং আর পড়েনি। বা, কারণ কেউ ভুলভাবে আপনার তুলনা () এর সাথে তুলনা () এর তুলনা ভুল হিসাবে গ্রহণ করেছে, এটি অন্য ডিবি পরিবেশে যেমন হবে (তবে স্ক্লাইটে নয়)। যে কোনও ক্ষেত্রে, কে যত্নশীল। "এই চেষ্টা করুন" উত্তরগুলি "ডকুমেন্টেশন পড়ুন" এর চেয়ে উত্তম। আমি উত্তরগুলি সহ নন-কোডটি স্কিমে করব / এমনকি এগুলি পড়ি না, প্রতিবার। উত্তর করার জন্য ধন্যবাদ!
ম্যাপলমলে

25

যদি ISNULL()পদ্ধতি না থাকে তবে আপনি পরিবর্তে এই প্রকাশটি ব্যবহার করতে পারেন:

CASE WHEN fieldname IS NULL THEN 0 ELSE fieldname END

এটি একই হিসাবে কাজ করে ISNULL(fieldname, 0)


4
ফাংশনটি প্রশ্নটি জিজ্ঞাসা করা ফাংশনের ifnullSQLite সমতুল্য isnull। এটি এখন যে কারও কাছে পড়ছে, দয়া করে আপনার নিজের সমাধানটি ব্যবহার করে লেখার আগে এসকিউএল মেনাসের উত্তরটি দেখুন (তবুও দেড় বছর আগে থেকে) CASE
spaaarky21

4
@ স্পাআরকি 21 - আপনি ভাল বক্তব্য রেখেছেন। তবে, এই উত্তরটি সম্ভবত ইউনিট পরীক্ষার জন্য স্ক্লাইট ব্যবহার এবং লাইভ কোডের জন্য একটি পৃথক আরডিবিএমএস ব্যবহার করার জন্য তাদের পক্ষে সহায়ক। সেক্ষেত্রে CASEবিবৃতি জাতীয় কিছু ব্যবহার করা এর চেয়ে আরও বেশি অর্থবোধ করতে পারে IFNULL
শেঠ ফুলগুলি

4
@ সেফফ্লাওয়ার্স আমি আরও আরডিবিএমএস-নিরপেক্ষ উপায়ে নাল ডিফল্ট মান প্রয়োগের মান দেখতে পাচ্ছি তবে এটিই একটি অন্য প্রশ্নের উত্তর। :) ওপি সহজলভ্যভাবে isnullঅন্যান্য সিস্টেমে এসকিউএলাইটের সমতুল্য চাইছে এবং আমি লোকদের "তাদের নিজস্ব রোল" করতে উত্সাহিত করতে চাই না।
spaaarky21

"লাস্ট-নেম, ফার্স্ট নেম" প্রদর্শনের জন্য SELECT অনুচ্ছেদে স্ট্রিং কনট্যাকটেশন ব্যবহারের জন্য আমি কেবল ইফননুল () বা ইফননুল () এর পরিপূরক হিসাবে কিছু খুঁজছিলাম কিন্তু প্রথম নামটি যদি নাল নন তবে কেবল কমাটিকেই সম্মতি জানাতে পারি। এই পদ্ধতির আমাকে এটি করতে দিন।
স্টিভ 80804

3

ISNULL () পদ্ধতির পরিবর্তে WHERE-clause ব্যবহার করুন IS NULLবা করুন IS NOT NULL:

SELECT myField1
FROM myTable1
WHERE myField1 IS NOT NULL

আরও তথ্যের সাথে সম্পাদনা করুন। কেবল-কোড এবং "এটি চেষ্টা করুন" উত্তরগুলি নিরুৎসাহিত করা হয়েছে, কারণ সেগুলিতে কোনও অনুসন্ধানযোগ্য সামগ্রী নেই এবং কেন কারও "এটি চেষ্টা করা উচিত" তা ব্যাখ্যা করবেন না।
অ্যারিসোন

4
এটি যা চাওয়া হয়েছিল তার সাথে প্রাসঙ্গিক নয়। ওপি myField1নন-শূন্য মানের যেখানে সারিগুলিকে ফিল্টার করতে চায় না, সে সারি মানটি শূন্য হলে ফলাফল কলামের মানটিকে আলাদা আলাদা করে প্রতিস্থাপন করতে চায়।
ড্যানিয়েল কামিল কোজার

2

এনভিএল () এবং ইসনুল () ব্যবহারের সমতুল্যর জন্য:

IFNULL(column, altValue)

column : আপনি যে কলামটি মূল্যায়ন করছেন।

altValue : 'কলাম' শূন্য হলে আপনি যে মানটি ফিরিয়ে দিতে চান।

উদাহরণ:

SELECT IFNULL(middle_name, 'N/A') FROM person;

* দ্রষ্টব্য: COALESCE () ফাংশনটি একইভাবে অন্যান্য ডাটাবেসের ক্ষেত্রে কাজ করে।

সূত্র:


-4

আপনি সহজেই এই জাতীয় ফাংশনটি সংজ্ঞায়িত করতে পারেন এবং এটির পরে এটি ব্যবহার করতে পারেন:

ifnull <- function(x,y) {
  if(is.na(x)==TRUE) 
    return (y)
  else 
    return (x);
}

বা একই minified সংস্করণ:

ifnull <- function(x,y) {if(is.na(x)==TRUE) return (y) else return (x);}

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