Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: mysql odwrócenie jednego bitu w int
Forum PHP.pl > Forum > Bazy danych > MySQL
ChrisB
chcę przenieść dziesiątki pól tinyint przechowujące różnego rodzaju ustawienia graczy (0,1) do jednego pola int, nie specjalnie zależy mi na czytelności, ani na przeszukiwaniu wg tych pól więc to nie problem

problem mam ze zmianą jednego bitu przy przestawianiu jakiejś opcji

  1. UPDATE uzytkownik SET ustawienia=ustawienia&~wybranybit WHERE ....


zmienia z 1 na 0 dany bit

  1. UPDATE uzytkownik SET ustawienia=ustawienia|wybranybit WHERE ....


zmienia z 0 na 1


a jak ustawić by zależnie od zapisanego w bazie obracał go jednym i tym samym zapytaniem...?
ChrisB
człowiek chce coś uproscic a tu zawsze cos sie $!#$! biggrin.gif
w teorii "~" - bitwise not - powinno załatwić sprawę no ale zwraca błąd niestety;/

  1. UPDATE uzytkownik SET ustawienia=case when ustawienia&1 then ustawienia&~1 else ustawienia|1 end WHERE ...


dzięki za link - dałem takie coś, działa poprawnie, powinienem cos tu zmienic czy jest wszystko ok? (dopiero raczkuje jeśli chodzi o operatory bitowe i bardziej skomplikowane zapytania - a chce to wrzucic na serwer odrazu biggrin.gif)
erix
A co tu zmieniać? winksmiley.jpg Więcej tu nie zmienisz, jeśli działa, to działa. winksmiley.jpg
Mchl
Zamiast tego możesz robić XOR ( ^ ) z maską.

  1. SELECT 8^2; -- b1000 ^ b0010 = b1010 = d10
  2. SELECT 10^2; -- b1010 ^ b0010 = b1000 = d8
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.