将INT转换为BIT的最佳方法

Ale*_*.P. 26 t-sql sql-server

我有列类型的INT,如果它包含1则我想选择1,否则选择0.我只知道使用CASE的方法:

CASE WHEN val=1 THEN 1 ELSE 0
Run Code Online (Sandbox Code Playgroud)

还有什么方法可以达到同样的效果?

小智 38

SQL SERVER 2012:

SELECT CAST(IIF ( field = 1, 1, 0 ) AS BIT) FROM table
Run Code Online (Sandbox Code Playgroud)

除此以外:

SELECT CAST(CASE field WHEN 1 THEN 1 ELSE 0 END AS BIT) From table
Run Code Online (Sandbox Code Playgroud)

  • 我认为最佳做法是检查`field` = 0是否相反 (2认同)

小智 7

您所需要做的就是将转换intbit

DECLARE
     @val INT = 42;
    ,@bitVal BIT;

SET @bitVal = CAST(@val AS BIT); -- equals 1
Run Code Online (Sandbox Code Playgroud)

任何非零数字都将转换为true。

https://technet.microsoft.com/zh-cn/library/ms191530(v=sql.105).aspx#_bit