हम SQL सर्वर WHEREस्थिति में कैसे जांच सकते हैं कि क्या कॉलम रिक्त नहीं है और खाली स्ट्रिंग ( '') नहीं है?
हम SQL सर्वर WHEREस्थिति में कैसे जांच सकते हैं कि क्या कॉलम रिक्त नहीं है और खाली स्ट्रिंग ( '') नहीं है?
जवाबों:
यदि आप केवल एक खाली स्ट्रिंग के रूप में "" मिलान करना चाहते हैं
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रिक्त स्थान या पूरी तरह से रिक्त स्थान वाली स्ट्रिंग के साथ पंक्तियाँ इस क्वेरी से बाहर रखी जाती हैं।
columnकोई इंडेक्स है, तो आपकी क्वेरी शायद इसका उपयोग नहीं करेगी
WHERE NULLIF(your_column, '') IS NOT NULL
आजकल (4.5 वर्ष पर), मानव को पढ़ने के लिए आसान बनाने के लिए, मैं बस उपयोग करूंगा
WHERE your_column <> ''
जबकि अशक्त जाँच को स्पष्ट करने का प्रलोभन है ...
WHERE your_column <> ''
AND your_column IS NOT NULL
... जैसा कि @ मर्टिन स्मिथ स्वीकार किए गए उत्तर में प्रदर्शित करता है, यह वास्तव में कुछ भी नहीं जोड़ता है (और मैं व्यक्तिगत रूप से आजकल पूरी तरह से एसक्यूएल नल को हिलाता हूं, इसलिए यह मेरे लिए वैसे भी लागू नहीं होगा!)।
कोलेस एक डिफ़ॉल्ट में नल को मोड़ देगा:
COALESCE (fieldName, '') <> ''
मूल रूप से
SELECT *
FROM [TableName]
WHERE column_name!='' AND column_name IS NOT NULL
बस जांचें: जहां मूल्य> '' - शून्य नहीं और खाली नहीं है
-- 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
WHERE COALESCE(column, '') <> ''?