আমার একটি টেবিলের কলাম রয়েছে যাতে শূন্য বা খালি মান থাকতে পারে। কোনও টেবিলে উপস্থিত সারিগুলিতে কোনও কলাম ফাঁকা বা নাল কিনা তা আমি কীভাবে চেক করব?
(e.g. null or '' or ' ' or ' ' and ...)
আমার একটি টেবিলের কলাম রয়েছে যাতে শূন্য বা খালি মান থাকতে পারে। কোনও টেবিলে উপস্থিত সারিগুলিতে কোনও কলাম ফাঁকা বা নাল কিনা তা আমি কীভাবে চেক করব?
(e.g. null or '' or ' ' or ' ' and ...)
উত্তর:
এটি যেখানে some_colআছে NULLবা ''(খালি স্ট্রিং) সমস্ত সারি নির্বাচন করবে
SELECT * FROM table WHERE some_col IS NULL OR some_col = '';
WHERE some_col IS NULL OR some_col = ' ' (স্ট্রিংয়ের মধ্যে একটি স্থান সন্নিবেশ করা হয়) তবে এটি মাইএসকিউএল এবং ওরাকল উভয় ক্ষেত্রেই কাজ করে, "ওনেডেউইভেন" এর উত্তর দেখুন। some_col = ''ওরাকল-এ কাজ করে না কারণ খালি স্ট্রিংয়ের অর্থ সেখানে নাল।
' 'তবে এটি এসকিউএলাইটে কাজ করবে না। এটি কেবল অভিন্ন / ডাইরেক্ট স্ট্রিং ম্যাচিং করে।
এসকিউএল -২২ স্ট্যান্ডার্ড দ্বারা সংজ্ঞায়িত হিসাবে, যখন পৃথক পৃথক প্রস্থের দুটি স্ট্রিংয়ের তুলনা করা হয়, সংকীর্ণ মানটি প্রশস্ত মানের সাথে একই প্রস্থের জন্য এটি ফাঁকাগুলির সাথে ডান-প্যাডযুক্ত হয়। সুতরাং, সমস্ত স্ট্রিং মানগুলি পুরোপুরি শূন্যস্থান নিয়ে গঠিত (শূন্যস্থান সহ) সমান উদাহরণ হিসাবে গণ্য হবে
'' = ' ' IS TRUE
'' = ' ' IS TRUE
' ' = ' ' IS TRUE
' ' = ' ' IS TRUE
etc
অতএব, কতগুলি স্পেসে some_colমান তৈরি করে তা বিবেচনা না করেই এটি কাজ করা উচিত :
SELECT *
FROM T
WHERE some_col IS NULL
OR some_col = ' ';
বা আরও সংক্ষেপে:
SELECT *
FROM T
WHERE NULLIF(some_col, ' ') IS NULL;
WHERE some_col IS NULL OR some_col = ' '(স্ট্রিংয়ে একটি স্থান সন্নিবেশ করাতে) এ পরিবর্তন করতে পারেন তবে এটি মাইএসকিউএল এবং ওরাকল উভয় ক্ষেত্রেই কাজ করে। some_col = ''ওরাকল-এ কাজ করে না কারণ খালি স্ট্রিংয়ের অর্থ সেখানে নুল হয় এবং সম্পূর্ণ শর্তটি নুল হয়ে যায়।
SELECT * FROM T WHERE some_col IS NOT NULL OR same_col <> ' '; এবং SELECT * FROM T WHERE NULLIF(some_col, ' ') IS NOT NULL;কাজ করা। আশা করি এটি কার্যকর হবে।
'' = ' 'এসকিউএল সার্ভারে কাজ করে তবে এসকিউএলাইটে নয়, যতদূর আমি বলতে পারি, এটি এখন পরীক্ষা করে testing
শর্তটি লেখার একটি ছোট্ট উপায়:
WHERE some_col > ''
যেহেতু null > ''উত্পাদিত হয় unknown, এটি উভয় nullএবং খালি স্ট্রিংগুলি ফিল্টার করে ফেলার প্রভাব ফেলে ।
coalesce(some_col, '') = ''
আপনি পরীক্ষা করতে পারেন কোনও কলামটি নাল বা নাল নয় ব্যবহার করে WHERE col IS NULLবা WHERE col IS NOT NULLযেমন eg
SELECT myCol
FROM MyTable
WHERE MyCol IS NULL
আপনার উদাহরণে আপনার কাছে সাদা জায়গার বিভিন্ন অনুমতি রয়েছে। আপনি ব্যবহার করে সাদা স্থানটি ছিনিয়ে নিতে TRIMপারেন এবং আপনি COALESCEকোনও নুল মান ডিফল্ট করতে ব্যবহার করতে পারেন (কোএলসসিই আপনি যে মানগুলি সরবরাহ করেন সেগুলি থেকে প্রথম নন-মানটি ফিরিয়ে দেবে।
যেমন
SELECT myCol
FROM MyTable
WHERE TRIM(COALESCE(MyCol, '') = ''
এই চূড়ান্ত ক্যোয়ারী যেখানে সারি ফিরে আসবে MyCol শালীন বা সাদা জায়গার কোনও দৈর্ঘ্য।
যদি আপনি এটি এড়াতে পারেন তবে WHERE ধারাটিতে কোনও কলামে ফাংশন না করাই ভাল কারণ এটি সূচী ব্যবহার করা শক্ত করে তোলে। যদি আপনি কেবল কলামটি নালাগুলি বা খালি হয় তা খতিয়ে দেখতে চান, আপনি এটি করে ভাল হতে পারেন:
SELECT myCol
FROM MyTable
WHERE MyCol IS NULL OR MyCol = ''
দেখুন TRIM একসঙ্গে বেড়ে ওঠা এবং নালআরও তথ্যের জন্য ।
এছাড়াও নাল মান নিয়ে কাজ করা মাইএসকিউএল ডক্স থেকে
)করার আগে একটি মিস করা=
WHERE ব্যতীত অন্য একটি পদ্ধতি, এটি চেষ্টা করুন ..
খালি এবং NULL উভয় মান নির্বাচন করবে
SELECT ISNULL(NULLIF(fieldname,'')) FROM tablename
উভয় ক্ষেত্রেই
SELECT IF(field1 IS NULL or field1 = '', 'empty', field1) as field1 from tablename
অথবা
SELECT case when field1 IS NULL or field1 = ''
then 'empty'
else field1
end as field1 from tablename
আমি আমার ডাটাবেসে অগোছালো ক্ষেত্রকে ঘৃণা করি। কলামটি যদি ফাঁকা স্ট্রিং বা নাল হতে পারে তবে আমি প্রতিবারই সিলেক্ট করার আগে বরং এটি ঠিক করে ফেললাম:
UPDATE MyTable SET MyColumn=NULL WHERE MyColumn='';
SELECT * FROM MyTable WHERE MyColumn IS NULL
এটি ডেটা পরিষ্কার রাখে, যতক্ষণ না আপনার কোনও কারণে বিশেষত NULL এবং খালি মধ্যে পার্থক্য করার প্রয়োজন হয় না।
null or Emptyআমার প্রকল্পে একটি কলামের মান পরীক্ষা করার সময় , আমি লক্ষ্য করেছি যে বিভিন্ন ডেটাবেসগুলিতে কিছু সমর্থন উদ্বেগ রয়েছে।
প্রতিটি ডাটাবেস সমর্থন করে না TRIM পদ্ধতি।
নীচে ম্যাট্রিক্সটি বিভিন্ন ডেটাবেস দ্বারা সমর্থিত পদ্ধতিগুলি বোঝার জন্য রয়েছে।
এসকিউএল-তে TRIM ফাংশনটি স্ট্রিং থেকে নির্দিষ্ট উপসর্গ বা প্রত্যয়টি সরাতে ব্যবহৃত হয়। সর্বাধিক সাধারণ প্যাটার্নটি মুছে ফেলা হচ্ছে সাদা জায়গা। এই ফাংশনটি বিভিন্ন ডেটাবেজে আলাদাভাবে বলা হয়:
TRIM(), RTRIM(), LTRIM()RTRIM(), LTRIM()RTRIM(), LTRIM()কীভাবে খালি / নাল পরীক্ষা করবেন: -
বিভিন্ন ডাটাবেস অনুসারে নীচে দুটি ভিন্ন উপায় রয়েছে-
এই ট্রিম ফাংশনগুলির জন্য বাক্য গঠনটি হ'ল:
চেক করতে ট্রিম ব্যবহার -
SELECT FirstName FROM UserDetails WHERE TRIM(LastName) IS NULL
পরীক্ষার জন্য এলটিআরআইএম এবং আরটিআরআইএম-এর ব্যবহার
SELECT FirstName FROM UserDetails WHERE LTRIM(RTRIM(LastName)) IS NULL
উভয় উপায়ে উপরে একই ফলাফল সরবরাহ করে আপনার ডেটাবেস সহায়তার ভিত্তিতে ব্যবহার করুন। এটি খালি থাকলে কেবলমাত্র টেবিলটি FirstNameথেকে ফেরত দেয়UserDetailsLastName
এটি আশা করা আপনাকে সহায়তা করবে :)
SELECT * FROM tbl WHERE trim(IFNULL(col,'')) <> '';
col1 != IFNULL(col2,'')
নাল জন্য পরীক্ষা করুন
$column is null
isnull($column)
খালি জন্য চেক করুন
$column != ""
যাইহোক, আপনার সর্বদা কলামের জন্য নল নয় সেট করা উচিত,
মাইএসকিএল অপ্টিমাইজেশন কেবলমাত্র একটি নল স্তর পরিচালনা করতে পারে
NULLমূল্যবোধ গ্রহণ না করা আলোচনার জন্য অন্য একটি সম্পূর্ণ বিষয়। আপনার যুক্তি সরবরাহ না করে সেই সুপারিশ করা উপযুক্ত বলে মনে করি না।
-1এবং ''।
select * from table where length(RTRIM(LTRIM(column_name))) > 0
RTRIMএবং LTRIM, কিন্তু না TRIM?
আমার ক্ষেত্রে, ডেটা আমদানির সময় কলামে স্থানটি প্রবেশ করানো হয়েছিল এবং এটি খালি কলামের মতো দেখায় এটির দৈর্ঘ্য 1 ছিল So length(column) এই আমরা অনুসন্ধান ক্যোয়ারী লিখতে পারেন উপর ভিত্তি করে তারপর
টেবিল থেকে যেখানে নির্বাচন করুন নির্বাচন করুন (COLUMN) = খালি কলামের জন্য কলামের দৈর্ঘ্য
যদি ডেটাটাইপটি স্ট্রিং হয় এবং সারিটি শূন্য হয় তবে এটি চেষ্টা করুন
SELECT * FROM table WHERE column_name IS NULL OR column_name = ''
যদি ডেটাটাইপটি int বা কলাম 0 হয় তবে এটি ব্যবহার করে দেখুন
SELECT * FROM table WHERE column_name > = 0
select isnull(mycolumn) from mytableমাইক্রোলোমটি বাতিল হলে 1 প্রদান করে।