Я хочу преобразовать тип bit
в "Да" или "Нет"
Пример:
SELECT FirstName, LastName, IsMale from members
Результаты:
Ramy Said 1
Ожидаемый результат:
Ramy Said Yes
Я хочу преобразовать тип bit
в "Да" или "Нет"
Пример:
SELECT FirstName, LastName, IsMale from members
Результаты:
Ramy Said 1
Ожидаемый результат:
Ramy Said Yes
Вы можете сделать это, используя найденное выражение case:
SELECT
FirstName,
LastName,
CASE WHEN IsMale = 1 THEN 'Yes' ELSE 'No' END AS IsMale
FROM
Members
Здесь вы идете:
SELECT FirstName, LastName, CASE WHEN IsMale = 1 THEN 'Yes' ELSE 'No' END AS Male
FROM members
В принципе, вы используете оператор CASE
, чтобы вы могли преобразовать значение. Если у вас есть три варианта, вы все равно можете использовать оператор case и просто добавить еще один вариант (очевидно, вы не можете иметь три варианта с битом, но если поле было int и т.д.) Оператор ELSE
является оператором по умолчанию это выполняется, если вы не получите соответствие. В нашем случае мы просто используем его для "Нет", поскольку мы можем иметь только "да" или "нет", но в случае более крупного оператора CASE
вы хотели бы использовать его в качестве поля возврата. Например, вы могли бы сказать "Item Not Found", если вы конвертировали элементы.
Используйте CASE
;
SELECT
FirstName,
LastName,
CASE IsMale WHEN 1 THEN 'Yes' ELSE 'No' END AS IsMale
FROM tbl
В 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')
Используйте IIF()
, который доступен SQL Server 2012
и далее.
Есть еще один способ добиться этого. (сокращенный путь (может быть, нет)). Это использование IIF()
. См. Ниже.
SELECT
[FirstName],
[LastName],
IIF([IsMale]=1,'Yes','No') AS [IsMale As String]
FROM
[Members]