पूर्ण पतला के लिए http://dev.mysql.com/doc/refman/5.0/en/set.html चेक बाहर है, लेकिन मूल रूप से इस तरह एक क्षेत्र है एक 'सेट' के रूप में जाना जाता है - इसमें संभावित मूल्यों की एक सूची है, जो केवल उनमें से एक या अधिक हो सकती है। मान को एक संख्या के रूप में संग्रहीत किया जाता है ... जिसका अर्थ है कि exhibitor_categories वास्तव में मान 4 को संग्रहीत कर रहा है जब कोई 'बाहरी' मान को सेट करता है, क्योंकि यह तीसरा बिट - '0100' सेट करता है। जब आप बाद में डेटाबेस से मूल्य वापस प्राप्त करते हैं, तो MySQL स्वचालित रूप से आपके लिए '0100' को 'आउटडोर' में बदल देता है।
लेकिन, क्वेरी में +0 जोड़कर, आप परिणाम को एक संख्या में रहने के लिए मजबूर करते हैं, इसलिए अगर आपको इस मामले में पंक्ति का मूल्य 'आउटडोर' पर सेट किया गया तो आपको वास्तव में '0100' संख्या मान मिलेगा।
enum पाने और मिश्रित सेट करने के लिए माफ़ी।
क्यों, आप पूछ सकते हैं, क्या यह 'en' कहने के बजाय '0100' मान को सेट कर रहा है, जैसे कि enum में? चूंकि एक सेट में कई मान हो सकते हैं - यदि मान 'समकालीन' (0001) और 'आउटडोर' (0100) का चयन किया गया था, तो यह '0101' < स्टोर करेगा - पहला और तीसरा बिट सेट करेगा, जिसे '5' के रूप में वापस किया जाएगा यदि आप +0 कोड का उपयोग करते हैं।
स्रोत
2009-11-09 17:27:29
+1 अच्छा सवाल है। मुझे आश्चर्य है कि SQL सर्वर 200/2005 के बराबर है या नहीं? उदाहरण के लिए –