অভিব্যক্তি stringexpression = ''
ফল দেয়:
TRUE
.. ''
(অথবা যে কোনও স্ট্রিংয়ের জন্য কেবলমাত্র ডেটা টাইপ সহ ফাঁকা স্থান রয়েছে char(n)
)
NULL
.. জন্য NULL
FALSE
.. অন্য কিছুর জন্য
সুতরাং যাচাই করার জন্য: " stringexpression
হয় নাল বা খালি" :
(stringexpression = '') IS NOT FALSE
বা বিপরীত পদ্ধতির (পড়তে সহজ হতে পারে):
(stringexpression <> '') IS NOT TRUE
সহ যে কোনও চরিত্রের জন্য কাজ করে char(n)
। তুলনা অপারেটর সম্পর্কে ম্যানুয়াল।
বা আপনার মূল ভাবটি ছাড়াই ব্যবহার করুন trim()
, যা ব্যয়বহুল শব্দ char(n)
(নীচে দেখুন), বা অন্য চরিত্রের ধরণের জন্য ভুল: কেবলমাত্র ফাঁকা স্ট্রিংগুলি খালি স্ট্রিং হিসাবে যেতে পারে।
coalesce(stringexpression, '') = ''
তবে শীর্ষে প্রকাশগুলি দ্রুত হয়।
বিপরীত যুক্ত করা এমনকি সহজ: " stringexpression
NUL বা খালিও নয়" :
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
প্যাডিং (এবং ফলস্বরূপ স্থানের অপচয়) এর কারণে ব্যবহার প্রায়শই ভুল পছন্দ। তবে সেগুলি বাদে: আমি মনে করি না এর চেয়ে ভাল সমাধান আর আছে।