Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 通过查询Sql Server 2005将位类型转换为是或否_Sql Server_Sql Server 2005 - Fatal编程技术网

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

Sql server 通过查询Sql Server 2005将位类型转换为是或否,sql-server,sql-server-2005,Sql Server,Sql Server 2005,我想将位类型转换为是或否 例如: 结果: 预期结果: 您可以使用以下方法执行此操作: 给你: SELECT FirstName, LastName, CASE WHEN IsMale = 1 THEN 'Yes' ELSE 'No' END AS Male FROM members 基本上,您可以使用CASE语句来转换值。如果您有三个选项,您仍然可以使用case语句,只需添加另一个选项(显然,您不能有三个带位的选项,但如果字段是int等)。ELSE语句是默认语句,如果您没有匹配项,则会运行该语

我想将
类型转换为是或否

例如:

结果:

预期结果:

您可以使用以下方法执行此操作:

给你:

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

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

使用
案例

SELECT 
  FirstName,
  LastName,
  CASE IsMale WHEN 1 THEN 'Yes' ELSE 'No' END AS IsMale
FROM tbl
使用一个
IIF()
,该工具从SQL Server 2012开始提供

实现这一点还有另一种方法。(速记方式(可能不是)。这是在使用
IIF()
。见下文

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

SQL Server 2012引入了两个新关键字
FORMAT
IIF
,它们可以提供一种更紧凑的方式将整数或位转换为字符串:

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,'')
但要将
类型转换为
,我现在将使用:

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

问题标记为SQL Server 2005,但IIF函数仅从SQL Server 2012起可用。@jazza感谢您的提示。我将在我的回答中更新这一点。它将对将来的人有帮助。如果IsMale为NULL?
SELECT 
  FirstName,
  LastName,
  CASE IsMale WHEN 1 THEN 'Yes' ELSE 'No' END AS IsMale
FROM tbl
SELECT
  [FirstName],
  [LastName],
  IIF([IsMale]=1,'Yes','No') AS [IsMale As String] 
FROM 
  [Members]
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,'')
PRINT 'Hello '+IIF(@MyBit=1,'Yes','No')