我想将bit
类型转换为是或否
例如:
SELECT FirstName, LastName, IsMale from members
结果:
Ramy Said 1
预期结果:
Ramy Said Yes
答案 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引入了两个新关键字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,'')
但要将bit
类型转换为Yes
或No
我现在会使用:
PRINT 'Hello '+IIF(@MyBit=1,'Yes','No')