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')