मेरे पास एक तालिका में एक स्तंभ है जिसमें शून्य या रिक्त मान हो सकते हैं। यदि तालिका में मौजूद पंक्तियों में कोई कॉलम खाली है या अशक्त है तो मैं कैसे जांचूं?
(e.g. null or '' or ' ' or ' ' and ...)
मेरे पास एक तालिका में एक स्तंभ है जिसमें शून्य या रिक्त मान हो सकते हैं। यदि तालिका में मौजूद पंक्तियों में कोई कॉलम खाली है या अशक्त है तो मैं कैसे जांचूं?
(e.g. null or '' or ' ' or ' ' and ...)
जवाबों:
यह सभी पंक्तियों का चयन करेंगे जहां some_col
है NULL
या ''
(रिक्त स्ट्रिंग)
SELECT * FROM table WHERE some_col IS NULL OR some_col = '';
WHERE some_col IS NULL OR some_col = ' '
(स्ट्रिंग में डाला गया एक स्थान) तो यह MySQL और Oracle दोनों पर काम करता है, "onedaywhen" का उत्तर देखें। some_col = ''
ओरेकल पर काम नहीं करता है क्योंकि खाली तार का मतलब है कि वहां फुल।
' '
, तो यह SQLite में काम नहीं करेगा। यह केवल समान / प्रत्यक्ष स्ट्रिंग मिलान को संभालता है।
जैसा कि SQL-92 मानक द्वारा परिभाषित किया गया है, जब अलग-अलग चौड़ाई के दो तारों की तुलना करते हैं, तो संकरा मूल्य रिक्त स्थान के साथ सही-गद्देदार होता है ताकि यह व्यापक मान के समान चौड़ाई हो। इसलिए, सभी स्ट्रिंग मान जिसमें पूरी तरह से रिक्त स्थान शामिल हैं (शून्य स्थान सहित) को समान माना जाएगा
'' = ' ' IS TRUE
'' = ' ' IS TRUE
' ' = ' ' IS TRUE
' ' = ' ' IS TRUE
etc
इसलिए, इस बात पर ध्यान दिए बिना काम करना चाहिए कि कितने रिक्त स्थान some_col
मान बनाते हैं :
SELECT *
FROM T
WHERE some_col IS NULL
OR some_col = ' ';
या अधिक सफलतापूर्वक:
SELECT *
FROM T
WHERE NULLIF(some_col, ' ') IS NULL;
WHERE some_col IS NULL OR some_col = ' '
(स्ट्रिंग में डाला गया एक स्थान) तो यह MySQL और Oracle दोनों पर काम करता है। some_col = ''
ओरेकल पर काम नहीं करता है क्योंकि खाली तार का मतलब वहां NULL है और पूरी स्थिति NULL हो जाती है।
SELECT * FROM T WHERE some_col IS NOT NULL OR same_col <> ' ';
और SELECT * FROM T WHERE NULLIF(some_col, ' ') IS NOT NULL;
काम करने की थी । आशा है कि यह उपयोगी होगा।
'' = ' '
में SQLServer में काम करता है, लेकिन SQLite में नहीं, जहां तक मैं बता सकता हूं, इसे अभी परीक्षण करने से।
शर्त लिखने का एक छोटा तरीका:
WHERE some_col > ''
null > ''
उत्पादन के बाद से unknown
, यह दोनों null
और खाली तारों को छानने का प्रभाव है ।
coalesce(some_col, '') = ''
आप परीक्षण कर सकते हैं कि कोई कॉलम अशक्त है या उपयोग नहीं कर रहा है WHERE col IS NULL
या WHERE col IS NOT NULL
उदा
SELECT myCol
FROM MyTable
WHERE MyCol IS NULL
आपके उदाहरण में आपके पास सफेद स्थान के विभिन्न क्रमांकन हैं। आप सफेद स्थान का उपयोग करके पट्टी TRIM
कर सकते हैं और आप COALESCE
एक डिफ़ॉल्ट मान का उपयोग कर सकते हैं (COALESCE आपके द्वारा दबाए गए मानों से पहला गैर-शून्य मान लौटाएगा।
जैसे
SELECT myCol
FROM MyTable
WHERE TRIM(COALESCE(MyCol, '') = ''
यह अंतिम क्वेरी उन पंक्तियों को लौटा देगी जहां MyCol
अशक्त है या व्हॉट्सएप की लंबाई है।
यदि आप इससे बच सकते हैं, तो WHERE क्लॉज में एक कॉलम पर फ़ंक्शन न होना बेहतर है क्योंकि यह एक इंडेक्स का उपयोग करना मुश्किल बनाता है। यदि आप बस यह जांचना चाहते हैं कि कोई स्तंभ रिक्त या रिक्त है, तो आप ऐसा करना बेहतर मान सकते हैं:
SELECT myCol
FROM MyTable
WHERE MyCol IS NULL OR MyCol = ''
अधिक जानकारी के लिए TRIM COALESCE और IS NULL देखें ।
इसके अलावा MySQL डॉक्स से अशक्त मानों के साथ कार्य करना
)
से पहले गुम=
WHERE के बिना एक और तरीका, यह कोशिश करो ..
रिक्त और पूर्ण मान दोनों का चयन करेगा
SELECT ISNULL(NULLIF(fieldname,'')) FROM tablename
भी
SELECT IF(field1 IS NULL or field1 = '', 'empty', field1) as field1 from tablename
या
SELECT case when field1 IS NULL or field1 = ''
then 'empty'
else field1
end as field1 from tablename
मुझे अपने डेटाबेस में गन्दे खेतों से नफरत है। यदि कॉलम एक रिक्त स्ट्रिंग या अशक्त हो सकता है, तो मैं हर बार चयन करने से पहले इसे ठीक करूंगा, जैसे:
UPDATE MyTable SET MyColumn=NULL WHERE MyColumn='';
SELECT * FROM MyTable WHERE MyColumn IS NULL
यह डेटा को चुस्त-दुरुस्त रखता है, जब तक कि आपको किसी कारणवश NULL और खाली के बीच अंतर करने की आवश्यकता न हो।
null or Empty
अपनी परियोजना में एक कॉलम के लिए मूल्य की जांच करते समय , मैंने देखा कि विभिन्न डेटाबेस में कुछ समर्थन चिंताएं हैं।
हर डेटाबेस समर्थन नहीं करता है TRIM
तरीका।
नीचे विभिन्न डेटाबेस द्वारा समर्थित विधियों को समझने के लिए मैट्रिक्स है।
SQL में TRIM फ़ंक्शन एक स्ट्रिंग से निर्दिष्ट उपसर्ग या प्रत्यय को हटाने के लिए उपयोग किया जाता है। हटाया जा रहा सबसे आम पैटर्न सफेद रिक्त स्थान है। इस फ़ंक्शन को अलग-अलग डेटाबेस में अलग-अलग तरीके से कहा जाता है:
TRIM(), RTRIM(), LTRIM()
RTRIM(), LTRIM()
RTRIM(), LTRIM()
कैसे खाली / अशक्त की जाँच करें: -
नीचे अलग-अलग डेटाबेस के अनुसार दो अलग-अलग तरीके हैं-
इन ट्रिम फ़ंक्शन के लिए सिंटैक्स हैं:
जांच के लिए ट्रिम का उपयोग-
SELECT FirstName FROM UserDetails WHERE TRIM(LastName) IS NULL
जाँच करने के लिए LTRIM और RTRIM का उपयोग-
SELECT FirstName FROM UserDetails WHERE LTRIM(RTRIM(LastName)) IS NULL
ऊपर दिए गए दोनों तरीके आपके डेटाबेस सपोर्ट के आधार पर समान परिणाम प्रदान करते हैं। यदि यह खाली है तो यह तालिका FirstName
से वापस UserDetails
आ जाता हैLastName
उम्मीद है कि यह आपकी मदद करेगा :)
SELECT * FROM tbl WHERE trim(IFNULL(col,'')) <> '';
col1 != IFNULL(col2,'')
अशक्त के लिए जाँच करें
$column is null
isnull($column)
खाली के लिए जाँच करें
$column != ""
हालाँकि, आपको हमेशा कॉलम के लिए NULL सेट नहीं करना चाहिए,
mysql ऑप्टिमाइज़ेशन केवल एक IS NULL स्तर को संभाल सकता है
NULL
मूल्यों को कभी स्वीकार नहीं करना चर्चा का एक और संपूर्ण विषय है। मुझे नहीं लगता कि आपके तर्क प्रदान किए बिना उस सिफारिश को करना उचित है।
-1
और ''
।
मेरे मामले में, डेटा आयात के दौरान कॉलम में स्थान दर्ज किया गया था और हालांकि यह एक खाली कॉलम की तरह दिख रहा था, इसकी लंबाई 1. इसलिए सबसे पहले मैंने खाली दिखने वाले कॉलम की लंबाई का उपयोग करके जांच की, length(column)
इसके आधार पर हम खोज क्वेरी लिख सकते हैं
चयन करें * TABLE WHERE LENGHT (COLUMN) = खाली कॉलम के लिए कॉलम की लंबाई
अगर यह डेटाटाइप स्ट्रिंग और पंक्ति शून्य है, तो इसे आज़माएँ
SELECT * FROM table WHERE column_name IS NULL OR column_name = ''
यदि डेटाटाइप इंट या कॉलम 0 हैं, तो यह कोशिश करें
SELECT * FROM table WHERE column_name > = 0
select isnull(mycolumn) from mytable
1 यदि mycolumn शून्य है तो रिटर्न करता है।