在SQL Server中将位值返回为1/0而不是True/False

But*_*ers 27 sql select bit

我在SQL Server 2000中有一个带有BitValue列的表.但是,它在SQL Server Management Studio中显示为True/False.当我这样做时,Select * from Tablename它返回BitValue列值为True/False.如何强制它将值返回为位(1/0)而不是True/False?任何帮助将非常感谢?

Gas*_*res 39

试试这个脚本,也许会有用:

SELECT CAST('TRUE' as bit) -- RETURN 1
SELECT CAST('FALSE' as bit) --RETURN 0
Run Code Online (Sandbox Code Playgroud)

无论如何,我总是使用值1或0(不是TRUE或FALSE).按照您的示例,更新脚本将是:

Update Table Set BitField=CAST('TRUE' as bit) Where ID=1
Run Code Online (Sandbox Code Playgroud)


Gor*_*off 17

修改查询以生成所需的输出.

尝试将它们转换为int:

select cast(bitFlag as int)
Run Code Online (Sandbox Code Playgroud)

或者,如果您愿意,请使用case:

select (case when bitFlag = 0 then 0 else 1 end)
Run Code Online (Sandbox Code Playgroud)


Ash*_*ada 5

可以使用CASE WHEN以下示例将其更改为0/1 :

SELECT 
 CASE WHEN SchemaName.TableName.BitFieldName = 'true' THEN 1 ELSE 0 END AS 'bit Value' 
 FROM SchemaName.TableName
Run Code Online (Sandbox Code Playgroud)