Преобразовать тип бита в Да или Нет по запросу Sql Server 2005 - PullRequest
23 голосов
/ 15 мая 2011

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

Например:

SELECT FirstName, LastName, IsMale from members

Результаты:

Ramy    Said    1  

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

Ramy    Said    Yes  

Ответы [ 5 ]

49 голосов
/ 15 мая 2011

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

SELECT
    FirstName,
    LastName,
    CASE WHEN IsMale = 1 THEN 'Yes' ELSE 'No' END AS IsMale
FROM
    Members
6 голосов
/ 15 мая 2011

А вот и вы:

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

В основном вы используете оператор CASE, чтобы позволить вам преобразовать значение.Если бы у вас было три варианта, вы все равно могли бы использовать оператор case и просто добавить другой параметр (очевидно, что у вас не может быть трех вариантов с битом, но если поле было int и т. Д.)это работает, если вы не получите совпадение.В нашем случае мы просто используем его как «Нет», поскольку у нас может быть только «да» или «нет», но в случае более крупного оператора CASE вы можете использовать его в качестве резервного поля.Например, вы можете сказать «Предмет не найден», если конвертируете предметы.

5 голосов
/ 15 мая 2011

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

SELECT 
  FirstName,
  LastName,
  CASE IsMale WHEN 1 THEN 'Yes' ELSE 'No' END AS IsMale
FROM tbl
1 голос
/ 05 декабря 2017

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')
1 голос
/ 26 января 2016

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

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

SELECT
  [FirstName],
  [LastName],
  IIF([IsMale]=1,'Yes','No') AS [IsMale As String] 
FROM 
  [Members]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...