Как инвертировать / перевернуть значения столбца TinyInt или Boolean в MySQL

Когда кто-то создает таблицу в базе данных, обычно структура таблицы должна быть легко читаемой для любого, но в зависимости от опыта разработчика может быть хаотично работать с ней из-за сложного умственного отображения. Представьте себе таблицу, где столбец, а именно is_default чьи возможные значения 1 или 0 (истина или ложь), например, следующая таблица human_values:

Я бы
human_value
is_default
1честность1
2толерантность1
3терпение1
4ненависть

В этом случае человек должно быть честный, терпимый и терпеливый, обычно не должен никого ненавидеть. Ну, это еще не проблема, так как вы можете понять таблицу, если кто-то не решит изменить логику формы вместо is_default в is_optional, Значения is_optional столбец все еще с тем же значением старого is_default номенклатура. Все значения теперь в столбце будут неправильными, поскольку они не соответствуют новой номенклатуре. Логика была бы теперь обратной:

Я бы
human_value
is_optional
1честность1
2толерантность1
3терпение1
4ненависть

По таблице сейчас человек не должен быть честный, терпимый или терпеливый и должен ненавидеть. Чтобы решить эту проблему, вы можете легко использовать запрос, который инвертирует значение столбцов, например, чтобы перевернуть все is_optional значения столбца каждой строки human_values Таблица, вы можете использовать следующий синтаксис запроса:

/** Invert all the values of the specified column **/
UPDATE tableName
SET `your_boolean_or_tiny_int_field` = NOT `your_boolean_or_tiny_int_field`

Чтобы изменить значения строк, мы будем использовать UPDATE утверждение, указывающее, что конкретная таблица должна быть изменена. Затем используйте SET оператор для определения нового значения поля, присваивающего то же значение, но с добавлением NOT состояние. NOT является условием для отмены, в этом случае это помогает инвертировать текущее значение столбца, например, 0 теперь будет 1, а 1 будет 0.

Для нашего стола human_values запрос должен выглядеть так:

/** Invert all the values of the is_optional column **/
UPDATE human_values
SET `is_optional` = NOT `is_optional`

Выполнение предыдущего запроса обновит все 4 строки нашей таблицы и оставит следующую структуру:

Я бы
human_value
is_optional
1честность
2толерантность
3терпение
4ненависть1

Как видите, все нули были преобразованы в единицы и наоборот. Помните, что пример запроса изменяет все строки, вы можете добавить операторы WHERE, чтобы ограничить измененные строки в соответствии с вашими потребностями.

Ссылка на основную публикацию
Adblock
detector