TGViewer
Базы данных (Data Base) Базы данных (Data Base) @database_info · 8.05K subscribers
Post #1290 1.49K
Битовая операция NOT в SQL Server: как переключить бит

Оператор XOR (^) позволяет инвертировать биты в SQL Server. Используя BitColumn = BitColumn ^ 1, вы сможете поменять 0 на 1 и наоборот.


UPDATE ВашаТаблица SET BitColumn = BitColumn ^ 1 WHERE ВашеУсловие;

Этот запрос инвертирует значения в столбце BitColumn для строк, которые соответствуют условию ВашеУсловие.


Введение в битовые операции
Битовые операции — это эффективный инструмент для управления отдельными битами. Они выполняются с помощью операторов AND, OR, XOR и NOT.


Инструментарий для инвертирования бита
Инвертируем все с помощью NOT
Для инверсии всех битов в значении используйте оператор ~:


-- Наблюдаем за инверсией всех битов!
UPDATE ваша_таблица SET ваш_столбец = ~ваш_столбец WHERE ваше_условие;


Инвертирование с помощью вычитания
Элегантный способ инвертирования бит со значениями 0 или 1:


-- Из 0 делаем 1, из 1 — 0. Элегантно, не правда ли?
UPDATE ваша_таблица SET ваш_столбец = 1 – ваш_столбец WHERE ваше_условие;


Метод инвертирования нескольких битов
Для инвертирования определённых бит при наличии нескольких используйте XOR с битовой маской:


-- Теперь нацеливаемся на определённый бит
UPDATE ваша_таблица SET ваш_столбец = ваш_столбец ^ битовая_маска WHERE ваше_условие;

Битовая_маска — это число, которое в двоичной системе имеет 1 там, где находится нужный бит, и 0 — во всех остальных позициях.

Визуализация
Представьте процесс инвертирования бит как переключение выключателя света:

Исходное состояние Переключить Результирующее состояние
Выкл (0) 🔄 Вкл (1)
Вкл (1) 🔄 Выкл (0)
В SQL это будет выглядеть следующим образом:


UPDATE ваша_таблица SET ваш_столбец = 1 – ваш_столбец WHERE ваше_условие;

До инвертирования: ваш_столбец имеет значение 😐(0) или 😃(1). После инвертирования: теперь значение ваш_столбец противоположное — 😃(1) или 😐(0).

Тонкости работы
Когда вы инвертируете биты, учитывайте следующее:

✔️Тип данных: Удостоверьтесь, что операция выполняется над данными типа bit.
✔️Производительность: Ограничьте обновление условием WHERE, чтобы выполнить процесс эффективно.
✔️Точность инвертирования: Для работы с несколькими битами выберите правильную битовую маску.
✔️Безопасность: Используйте транзакции TRANSACTION для обеспечения надежности операций при работе с несколькими битами или строками.


#db

👉 @database_info
  • 👍 2
More from @database_info
  1. Sep 28, 2026SQL Important Queries Сохрани на потом, тебе пригодится👌 📲 Мы в MAX #db 👉 @database_inf…
  2. Sep 24, 2026Сегодня я хочу рассказать вам про одну часто недооцененную фишку в PostgreSQL - partial in…
  3. Sep 23, 2026🚀 Сегодня я покажу вам один из моих любимых хаков для PostgreSQL – генерация серий дат бе…
  4. Sep 22, 2026⚡️ Совет по работе с базами данных 💡 Уникальные индексы с исключением определенных строк…
  5. Sep 21, 2026Как быстро найти “тяжёлые” запросы в PostgreSQL Сегодня покажу простой способ найти самые…
  6. Sep 20, 2026🚀 Сегодня покажу, как быстро диагностировать «тормоза» в PostgreSQL - без всяких внешних…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →