Выбор строк на основе "битового" столбца SQL Server

В таблице SQL Server у меня есть BIT столбец и на основе его значения, мне нужно обновить другие столбцы этой таблицы с некоторыми значениями. Я пробовал это

UPDATE tablename SET Completed = GETDATE() WHERE CheckTaskAvailable = TRUE

но я получаю ошибку

Msg 207, Level 16, State 1, Server SQLDEV01, Line 1
Invalid column name 'TRUE'.

Как это сделать в запросе T-SQL?

3 ответа

Если вы хотите установить как true пытаться

Update table set columnName = 1 where ...

если вы хотите установить как false пытаться

Update table set columnName = 0 where ...

В дополнение к использованию значений 0 и 1 в документации T-SQL для битов сказано, что

Строковые значения TRUE и FALSE могут быть преобразованы в битовые значения: TRUE преобразуется в 1, а FALSE преобразуется в 0.

так что эти работы тоже

UPDATE tablename SET bitcolumn = 'TRUE' WHERE ...

UPDATE tablename SET othercolumn = 'something' WHERE bitcolumn = 'TRUE'

Мне нужно было сделать что-то похожее, когда я искал, чтобы обновить поле, основываясь на том, существует запись или нет в другой таблице, поэтому я использовал приведенный выше код (спасибо RezaRahmati) и добавил:

Update table set columnName = 1 where ID IN (SELECT ID FROM other table)

или за ложь

Update table set columnName = 0 where ID NOT IN (SELECT ID FROM other table)

Мне действительно нравится Stack Overflow, оно действительно помогло мне учиться.

Другие вопросы по тегам