2010-08-16 15 views
11

MySQL एक बूलियन क्षेत्र के रूप में सेवा करने के लिए TinyINT का उपयोग करता है। 0 और 1 के संभावित विकल्पों को देखते हुए, मैंने तय कर लिया है कि मैं इस तरह मूल्यों फ्लिप चाहते हैं:MySQL बूलियन - मूल्य फ़्लिपिंग?

UPDATE table 
SET boolean_field = ABS(boolean_field - 1) 
WHERE Circle-K = 'Strange things are afoot' 

तो तुम जाओ या तो 1 -> 0 -> एबीएस (0) = 0

या 0 - > -1 -> एबीएस (-1) = 1

अब मैं उत्सुक हूँ अगर यह स्वीकार्य या भयानक वास्तविक प्रोग्रामर को है?

/मुझे अभी शुरुआत

उत्तर

44

क्यों नहीं बस का उपयोग करें:

 
UPDATE the_table 
    SET boolean_field = NOT boolean_field 
WHERE ... 

आपका इरादा बनाता है बहुत आसान

+0

+1 अतिरिक्त पठनीयता के लिए +1 (संभवतः) गति बलिदान नहीं। – paxdiablo

+0

+1: यह नहीं पता था कि वैध था - 4.1 पर पुष्टि की गई –

12

तुम भी field = 1 का उपयोग कर सकते है - field या field =! field

+0

को पढ़ने के लिए यह वास्तव में एक टिप्पणी, नहीं प्रश्न का उत्तर है। लेखक के लिए प्रतिक्रिया छोड़ने के लिए कृपया "टिप्पणी जोड़ें" का उपयोग करें। – Pratik

+8

@ प्रैटिक: मुझे यकीन है कि यह एक उत्तर है (जब तक यह ओपी चाहता है), आपके उल्लेख के लिए धन्यवाद। – zerkms

+0

फ़ील्ड =! क्षेत्र, यह एक सही जवाब है। – rishad2m8

संबंधित मुद्दे