2010-08-16 19 views
11

MySQL, boole alanı olarak hizmet vermek için TinyINT'i kullanır. Ben böyle değerlerini çevirmek istiyorum karar verdi, 0 ile 1 arasında olası seçenekleri göz önüne alındığında: MySQL boolean - değeri mi sayıyorsunuz?

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

Yani 1 gitmek ya -> 0 -> ABS (0) = 0

veya 0 - > -1 -> ABS (-1) = Bu kabul edilebilir veya gerçek programcılar için korkunç ise

1 şimdi merak ediyorum?

/me Ayrıca field = 1 kullanabileceğiniz bir acemi

cevap

44

Neden sadece kullanım:

 
UPDATE the_table 
    SET boolean_field = NOT boolean_field 
WHERE ... 

niyetinizi yapar çok daha kolay Bu gerçekten bir açıklama değil, soruya bir cevap

+0

+1 (muhtemelen) hızdan ödün vermezken okunabilirliği arttırmak için. – paxdiablo

+0

+1: Bunun geçerli olduğunu bilmiyordum - 4.1'de onaylandı –

12

olduğunu - field veya field =! field

+0

okumak için. Yazar için geri bildirim bırakmak için lütfen "yorum ekle" yi kullanın. – Pratik

+8

@Pratik: Eminim bir cevaptır (OP'nin istediği sürece), bahsettiğiniz için teşekkür ederim. – zerkms

+0

alan =! alan, bu doğru cevaptır. – rishad2m8