2010-08-16 145 views
11

MySQL usa TinyINT para servir como un campo booleano. Teniendo en cuenta las posibles opciones de 0 y 1, decidí que me muevo de un tirón los valores de la siguiente manera:MySQL booleano - volteando el valor?

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

Así que o bien ir 1 -> 0 -> ABS (0) = 0

o 0 - > -1 -> ABS (-1) = 1

ahora estoy ansioso por ver si esto es aceptable o horrible a los programadores reales?

/Me es un principiante

Respuesta

44

Por qué no simplemente usar:

 
UPDATE the_table 
    SET boolean_field = NOT boolean_field 
WHERE ... 

hace que su intención sea mucho más fácil de leer

+0

+1 para mayor legibilidad mientras (probablemente) no sacrifica velocidad. – paxdiablo

+0

+1: No sabía que era válido - confirmado en 4.1 –

12

También puede utilizar field = 1 - field o field =! field

+0

Esto es realmente un comentario, no una respuesta a la pregunta. Utilice "agregar comentario" para dejar comentarios al autor. – Pratik

+8

@Pratik: estoy seguro de que es una respuesta (siempre que haga lo que OP quiere), gracias por su mención. – zerkms

+0

campo =! campo, esta es la respuesta correcta. – rishad2m8

Cuestiones relacionadas