SQL सर्वर में रिक्त नहीं है और खाली स्ट्रिंग के लिए कैसे जांचें?


201

हम SQL सर्वर 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

आजकल (4.5 वर्ष पर), मानव को पढ़ने के लिए आसान बनाने के लिए, मैं बस उपयोग करूंगा

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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.