অভিব্যক্তি stringexpression = ''ফল দেয়:
TRUE .. ''(অথবা যে কোনও স্ট্রিংয়ের জন্য কেবলমাত্র ডেটা টাইপ সহ ফাঁকা স্থান রয়েছে char(n))
NULL .. জন্য NULL
FALSE .. অন্য কিছুর জন্য
সুতরাং যাচাই করার জন্য: " stringexpressionহয় নাল বা খালি" :
(stringexpression = '') IS NOT FALSE
বা বিপরীত পদ্ধতির (পড়তে সহজ হতে পারে):
(stringexpression <> '') IS NOT TRUE
সহ যে কোনও চরিত্রের জন্য কাজ করে char(n)। তুলনা অপারেটর সম্পর্কে ম্যানুয়াল।
বা আপনার মূল ভাবটি ছাড়াই ব্যবহার করুন trim(), যা ব্যয়বহুল শব্দ char(n)(নীচে দেখুন), বা অন্য চরিত্রের ধরণের জন্য ভুল: কেবলমাত্র ফাঁকা স্ট্রিংগুলি খালি স্ট্রিং হিসাবে যেতে পারে।
coalesce(stringexpression, '') = ''
তবে শীর্ষে প্রকাশগুলি দ্রুত হয়।
বিপরীত যুক্ত করা এমনকি সহজ: " stringexpressionNUL বা খালিও নয়" :
stringexpression <> ''
এই ডাটা টাইপ সম্পর্কে char(n), সংক্ষিপ্ত জন্য: character(n)। ( char/ characterজন্য ছোট char(1)/ character(1)।) এর ব্যবহারের হয় Postgres মধ্যে নিরুৎসাহিত :
বেশিরভাগ পরিস্থিতিতে textবা character varyingপরিবর্তে ব্যবহার করা উচিত।
গুলান না char(n)অন্যান্য, দরকারী, চরিত্র ধরনের সঙ্গে varchar(n), varchar, textবা"char" (ডাবল-কোট দিয়ে)।
ইন char(n)একটি খালি স্ট্রিং অন্য কোন শুধুমাত্র শূণ্যস্থান গঠিত স্ট্রিং থেকে আলাদা নয়। প্রকারের সংজ্ঞা অনুসারে এগুলি সবগুলি n স্পেসে ভাঁজ করা হয় char(n)। এটি যৌক্তিকভাবে অনুসরণ করে যে উপরের মত প্রকাশগুলি char(n)পাশাপাশি কাজ করে - ঠিক তেমন এগুলি (যা অন্যান্য চরিত্রের ধরণের জন্য কাজ করে না):
coalesce(stringexpression, ' ') = ' '
coalesce(stringexpression, '') = ' '
ডেমো
খালি স্ট্রিং যখন ফাঁকা হয় তখন কোনও স্ট্রিংয়ের সমান হয় char(n):
SELECT ''::char(5) = ''::char(5) AS eq1
, ''::char(5) = ' '::char(5) AS eq2
, ''::char(5) = ' '::char(5) AS eq3;
ফলাফল:
eq1 | eq2 | eq3
----+-----+----
t | t | t
"নাল বা ফাঁকা স্ট্রিং" এর জন্য পরীক্ষা করুন এর সাথে char(n):
SELECT stringexpression
, stringexpression = '' AS base_test
, (stringexpression = '') IS NOT FALSE AS test1
, (stringexpression <> '') IS NOT TRUE AS test2
, coalesce(stringexpression, '') = '' AS coalesce1
, coalesce(stringexpression, ' ') = ' ' AS coalesce2
, coalesce(stringexpression, '') = ' ' AS coalesce3
FROM (
VALUES
('foo'::char(5))
, ('')
, (' ') -- not different from '' in char(n)
, (NULL)
) sub(stringexpression);
ফলাফল:
stringexpression | বেস_স্টেট | পরীক্ষা 1 | পরীক্ষা 2 | coalesce1 | coalesce2 | coalesce3
------------------ + + ----------- + + ------- + + ------- + + --- -------- + + ----------- + + -----------
foo | চ | চ | চ | চ | চ | চ
| t | t | t | t | t | টি
| t | t | t | t | t | টি
নাল | নাল | t | t | t | t | টি
"নাল বা ফাঁকা স্ট্রিং" এর জন্য পরীক্ষা করুন এর সাথে text:
SELECT stringexpression
, stringexpression = '' AS base_test
, (stringexpression = '') IS NOT FALSE AS test1
, (stringexpression <> '') IS NOT TRUE AS test2
, coalesce(stringexpression, '') = '' AS coalesce1
, coalesce(stringexpression, ' ') = ' ' AS coalesce2
, coalesce(stringexpression, '') = ' ' AS coalesce3
FROM (
VALUES
('foo'::text)
, ('')
, (' ') -- different from '' in a sane character types
, (NULL)
) sub(stringexpression);
ফলাফল:
stringexpression | বেস_স্টেট | পরীক্ষা 1 | পরীক্ষা 2 | coalesce1 | coalesce2 | coalesce3
------------------ + + ----------- + + ------- + + ------- + + --- -------- + + ----------- + + -----------
foo | চ | চ | চ | চ | চ | চ
| t | t | t | t | চ | চ
| চ | চ | চ | চ | চ | চ
নাল | নাল | t | t | t | t | চ
ডিবি <> ফ্রিডল এখানে
পুরাতন স্ক্যালফিল্ড
সম্পর্কিত:
charপ্যাডিং (এবং ফলস্বরূপ স্থানের অপচয়) এর কারণে ব্যবহার প্রায়শই ভুল পছন্দ। তবে সেগুলি বাদে: আমি মনে করি না এর চেয়ে ভাল সমাধান আর আছে।