मैं SQL:2003 extension T611 में निर्दिष्ट अनुसार सभी परिणामों को अंतिम (NULLS LAST
) के साथ अपना परिणाम सॉर्ट करना चाहता हूं। अफसोस की बात है, SQLite इसका समर्थन नहीं करता है। क्या कोई चालाक कामकाज है?SQLite में शून्य अंतिम कैसे करें?
उत्तर
यह काम कर सकता है?
SELECT ....... ORDER BY COALESCE(col1,col2,col3,etc) IS NULL
मैं आपके शब्द "सभी नल कॉलम आखिरी" द्वारा उलझन में हूं। आप किसी खास कॉलम में पिछले सभी शून्य मान चाहते हैं, इस का उपयोग करें:
SELECT ....... ORDER BY col1 IS NULL
आप नकली यह करने के लिए कुछ इस तरह कर सकते हैं:
select * from test
order by case ordercol when null then 1 else 0 end, ordercol
क्यों ऑर्डर नहीं है जब ऑर्डरकोल शून्य है तो 0 और 1, ऑर्डरोल'? जब कोई ऑर्डरोल में -100 से नीचे मान रखता है तो एक अजीब बग बचाता है। – mvds
यह एक अच्छा मुद्दा है। मैंने अभी अपने सिर के ऊपर से एक अस्पष्ट उदाहरण लिखा है क्योंकि हम नहीं जानते कि डेटा कैसा दिखता है। लेकिन आपका सुधार सामान्य रूप से बेहतर काम करता है - इसे लागू किया! – Blorgbeard
जब मैं कुछ हद तक Blorgbeard के जवाब की तरह, इस प्रकार नहीं करता ' सही डेटाटाइप के वैध 'नकली' मूल्य की आपूर्ति करने के बारे में परवाह नहीं है।
ORDER BY CASE WHEN SOMECOL IS NULL THEN 1 ELSE 0 END, SOMECOL
वैकल्पिक रूप से, भले ही आप नकली मूल्य का उपयोग करना चाहते हैं, तो मैं ISNULL पसंद करूंगा!
ORDER BY ISNULL(SOMECOL,-9999)
जैसा कि माइकल ने नोट किया, SQLite IFNULL
का उपयोग करता है। आप एएनएसआई-एसक्यूएल सार्वभौमिक संस्करण COALESCE
का भी उपयोग कर सकते हैं।
मामूली सुधार मुझे लगता है ... SQLite में, ISNULL IFNULL होना चाहिए। – Michael
धन्यवाद @ माइकल, बेहतर जानकारी के साथ अपडेट किया गया – RichardTheKiwi
मैं एक ही समस्या में भाग गया। मुझे पता चला है कि यह काम कर सकता है:
order by ifnull(column_what_you_want_to_sort,'value in case of null')
तुम्हारा मतलब नहीं है 'NULL' नहीं है (मैं SQLite के लिए किसी भी
isnull
समारोह भी नहीं मिला)? – dan04@ dan04 thx, आप सही हैं – mvds
मुझे लगता है कि यह आखिरी नल पाने के लिए 'IS NULL' होना चाहिए :) – Blorgbeard