22

I have a column which is bool. How can I set true, false values for that? Here is my query :

Update [mydb].[dbo].[myTable]
SET isTrue =
(
CASE WHEN Name = 'Jason' THEN 1
END
)

I don't know what to write after THEN keyword. Should I write 1 or true or 1 AS BIT or something else?

jason
  • 6,962
  • 36
  • 117
  • 198

4 Answers4

35

Sql server does not expose a boolean data type which can be used in queries.
Instead, it has a bit data type where the possible values are 0 or 1.
So to answer your question, you should use 1 to indicate a true value, 0 to indicate a false value, or null to indicate an unknown value.

Update [mydb].[dbo].[myTable]
SET isTrue =
CASE WHEN Name = 'Jason' THEN 
    1
ELSE 
    0
END
Zohar Peled
  • 79,642
  • 10
  • 69
  • 121
1

The query you added will work fine, but it will you have to take care of "FALSE" part as well otherwise it will try to enter NULL in your column. Do you have any default value constrain on isTrue column?

Update [mydb].[dbo].[myTable]
SET isTrue =
(
   CASE WHEN Name = 'Jason' THEN 1 ELSE 0
END
)
K D
  • 5,889
  • 1
  • 23
  • 35
1

You need case statement with when and else if not any condition satisfied

Update [mydb].[dbo].[myTable]
SET isTrue = ( CASE WHEN Name = 'Jason' 
                   THEN 1 else 0 
               END)
Vikram Jain
  • 5,498
  • 1
  • 19
  • 31
1

Use IIF function of sql server

DECLARE @a int = 45, @b int = 40;  
DECLARE @a int = 45, @b int = 40;  
SELECT IIF ( @a > @b, 'TRUE', 'FALSE' ) AS Result; 

Result  
--------  
TRUE  

(1 row(s) affected)

For Your Problem

Update [mydb].[dbo].[myTable]
SET isTrue = ( Name = 'Jason', 'TRUE', 'FALSE' )


Mike
  • 1,048
  • 2
  • 11
  • 23