Выбор строк на основе "битового" столбца 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, оно действительно помогло мне учиться.