Подтвердить что ты не робот

Преобразование типа бит в Да или Нет по запросу Sql Server 2005

Я хочу преобразовать тип bit в "Да" или "Нет"

Пример:

SELECT FirstName, LastName, IsMale from members

Результаты:

Ramy    Said    1  

Ожидаемый результат:

Ramy    Said    Yes  
4b9b3361

Ответ 1

Вы можете сделать это, используя найденное выражение case:

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

Ответ 2

Здесь вы идете:

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

В принципе, вы используете оператор CASE, чтобы вы могли преобразовать значение. Если у вас есть три варианта, вы все равно можете использовать оператор case и просто добавить еще один вариант (очевидно, вы не можете иметь три варианта с битом, но если поле было int и т.д.) Оператор ELSE является оператором по умолчанию это выполняется, если вы не получите соответствие. В нашем случае мы просто используем его для "Нет", поскольку мы можем иметь только "да" или "нет", но в случае более крупного оператора CASE вы хотели бы использовать его в качестве поля возврата. Например, вы могли бы сказать "Item Not Found", если вы конвертировали элементы.

Ответ 3

Используйте CASE;

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

Ответ 4

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

Ответ 5

Используйте IIF(), который доступен SQL Server 2012 и далее.

Есть еще один способ добиться этого. (сокращенный путь (может быть, нет)). Это использование IIF(). См. Ниже.

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