এসকিউএল সার্ভারে কী নাল এবং খালি স্ট্রিং নয় তা কীভাবে পরীক্ষা করবেন?


201

WHEREকলামটি শূন্য নয় এবং খালি স্ট্রিং ( '') নয় কিনা তা আমরা কীভাবে একটি এসকিউএল সার্ভার শর্তে পরীক্ষা করতে পারি ?

উত্তর:


302

যদি আপনি কেবল একটি খালি স্ট্রিং হিসাবে "" মিলাতে চান

WHERE DATALENGTH(COLUMN) > 0 

আপনি যদি শূন্যস্থান থেকে সম্পূর্ণরূপে গঠিত কোনও স্ট্রিংটি গণনা করতে চান

WHERE COLUMN <> '' 

NULLএকটি WHEREক্লজ ব্যবহার করার সময় এই দুটিই মান ফেরত দেবে না । এর চেয়ে এগুলি NULLহিসাবে মূল্যায়ন করবে ।UNKNOWNTRUE

CREATE TABLE T 
  ( 
     C VARCHAR(10) 
  ); 

INSERT INTO T 
VALUES      ('A'), 
            (''),
            ('    '), 
            (NULL); 

SELECT * 
FROM   T 
WHERE  C <> ''

কেবল একক সারি ফেরত দেয় A। অর্থাত্‍ সারিগুলি NULLবা একটি খালি স্ট্রিং বা একটি স্ট্রিং সম্পূর্ণরূপে ফাঁকা স্থানগুলি এই কোয়েরি দ্বারা বাদ দেওয়া হয়েছে।

এসকিউএল ফিডল


6
না কেন WHERE COALESCE(column, '') <> ''?
লিভেন কের্মসেকার্স

10
কারণ যদি columnকোনও সূচক থাকে, তবে আপনার ক্যোয়ারী সম্ভবত এটি ব্যবহার করবে না
লামাক

106
WHERE NULLIF(your_column, '') IS NOT NULL

আজকাল (সাড়ে ৪ বছর), মানুষের পড়া সহজ করার জন্য, আমি কেবল এটি ব্যবহার করব

WHERE your_column <> ''

নাল চেকটি সুস্পষ্ট করার লোভ রয়েছে ...

WHERE your_column <> '' 
      AND your_column IS NOT NULL

... যেমন যেমন মার্টিন স্মিথ গ্রহণযোগ্য উত্তরে দেখিয়েছেন, এটি আসলে কিছুই যুক্ত করে না (এবং আমি ব্যক্তিগতভাবে এসকিউএল নালগুলি আজকাল পুরোপুরি বাদ দিই, সুতরাং এটি আমার পক্ষে প্রযোজ্য হবে না!)।




7

এটি করার একটি সূচক বান্ধব উপায় হ'ল:

where (field is not null and field <> '')

যদি অনেকগুলি সারি না থাকে বা এই ক্ষেত্রটি সূচকযুক্ত না হয়, আপনি ব্যবহার করতে পারেন:

 where isnull(field,'') <> ''

2

নাল, সাদা স্থান এবং খালি স্ট্রিংগুলি পরীক্ষা করতে আপনি এর মধ্যে একটি ব্যবহার করতে পারেন।

WHERE COLUMN <> '' 

WHERE LEN(COLUMN) > 0

WHERE NULLIF(LTRIM(RTRIM(COLUMN)), '') IS NOT NULL

0

শুধু পরীক্ষা করুন: যেখানে মান> '' - নাল নয় এবং খালি নয়

-- COLUMN CONTAINS A VALUE (ie string not null and not empty) :
-- (note: "<>" gives a different result than ">")
select iif(null    > '', 'true', 'false'); -- false (null)
select iif(''      > '', 'true', 'false'); -- false (empty string)
select iif(' '     > '', 'true', 'false'); -- false (space)
select iif('    '  > '', 'true', 'false'); -- false (tab)
select iif('
'                  > '', 'true', 'false'); -- false (newline)
select iif('xxx'   > '', 'true', 'false'); -- true
--
--
-- NOTE - test that tab and newline is processed as expected:
select 'x   x' -- tab
select 'x

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