通过查询Sql Server 2005将位类型转换为是或否

时间:2011-05-15 13:00:28

标签: sql-server sql-server-2005

我想将bit类型转换为是或否

例如:

SELECT FirstName, LastName, IsMale from members

结果:

Ramy    Said    1  

预期结果:

Ramy    Said    Yes  

5 个答案:

答案 0 :(得分:48)

您可以使用searched case expression

执行此操作
SELECT
    FirstName,
    LastName,
    CASE WHEN IsMale = 1 THEN 'Yes' ELSE 'No' END AS IsMale
FROM
    Members

答案 1 :(得分:6)

你走了:

SELECT FirstName, LastName, CASE WHEN IsMale = 1 THEN 'Yes' ELSE 'No' END AS Male
FROM members

基本上,您使用CASE语句来转换值。如果你有三个选择,你仍然可以使用case语句并添加另一个选项(显然你不能有三个选项,但如果字段是int,等等。)ELSE语句是如果没有匹配则运行的默认语句。在我们的例子中,我们只是将它用于否,因为我们只能有“是”或“否”,但在更大的CASE语句的情况下,您可能希望将其用作后备字段。例如,如果您要转换项目,则可以说“找不到项目”。

答案 2 :(得分:5)

使用CASE;

SELECT 
  FirstName,
  LastName,
  CASE IsMale WHEN 1 THEN 'Yes' ELSE 'No' END AS IsMale
FROM tbl

答案 3 :(得分:1)

使用IIF()以后可用的SQL Server 2012

还有另一种实现这一目标的方法。 (简写方式(可能不是))。那是使用IIF()。见下文。

SELECT
  [FirstName],
  [LastName],
  IIF([IsMale]=1,'Yes','No') AS [IsMale As String] 
FROM 
  [Members]

答案 4 :(得分:1)

SQL Server 2012引入了两个新关键字FORMATIIF,可以提供更简洁的方法将整数或位转换为字符串:

DECLARE @MyInt int = 123
PRINT 'Hello '+FORMAT(@MyInt,'')

-- (note: the "+0" converts a bit type to int then outputs '0' or '1')
DECLARE @MyBit bit = 0
PRINT 'Hello '+FORMAT(@MyBit+0,'')

但要将bit类型转换为YesNo我现在会使用:

PRINT 'Hello '+IIF(@MyBit=1,'Yes','No')