Как зеркально отразить битовые поля в T-SQL?

Основные преимущества [1 124] ASP.net MVC:

  1. Включает полный контроль над представленным HTML.

  2. Обеспечивает чистое разделение проблем (SoC).

  3. Включает Разработка через тестирование (TDD) .

  4. Простая интеграция с платформами JavaScript.

  5. После дизайна природы не сохраняющей состояние сети.

  6. УСПОКОИТЕЛЬНЫЕ URL, который включает SEO.

  7. Никакой ViewState и События возврата

основное преимущество [1 125] Веб-форма ASP.net:

  1. Это обеспечивает разработка RAD

  2. модель Простой разработки для разработчиков те, которые происходят из разработки winform.

67
задан Peter Mortensen 1 December 2010 в 19:39
поделиться

5 ответов

Для этого не требуется побитовое - не - просто выполните XOR с 1 / true.

Чтобы проверить это:

select idColumn, bitFieldY, bitFieldY ^ 1 as Toggled
from tableX

Чтобы обновить:

update tableX
set bitFieldY = bitFieldY ^ 1
where ...

MSDN T- SQL Exclusive-OR (^)

114
ответ дан 24 November 2019 в 14:25
поделиться

Почему бы не простое битовое поле = 1 - битовое поле ?

48
ответ дан 24 November 2019 в 14:25
поделиться
UPDATE tblTest SET MyBitField = CASE WHEN MyBitField = 1 THEN 0 ELSE 1 END

Это мягкий, но каждый поймет, что он делает.

РЕДАКТИРОВАТЬ:

Вам также может потребоваться учесть нули, как предложено в комментариях. Конечно, зависит от ваших требований.

UPDATE tblTest SET 
   MyBitField = CASE 
      WHEN MyBitField = 1 THEN 0 
      WHEN MyBitField = 0 THEN 1
      ELSE NULL -- or 1 or 0 depending on requirements
   END
12
ответ дан 24 November 2019 в 14:25
поделиться

Вы пробовали это?

UPDATE mytable SET somecolumn = 
  CASE WHEN somecolumn = 0 THEN 1 
       WHEN somecolumn IS NULL THEN NULL
       WHEN somecolumn = 1 THEN 0
  END
1
ответ дан 24 November 2019 в 14:25
поделиться

Я был почти уверен, что у большинства разновидностей SQL есть побитовое НЕ, поэтому я проверил, есть ли , похоже, один в TSQL .

Судя по документации, это символ ~ .

16
ответ дан 24 November 2019 в 14:25
поделиться