web-dev-qa-db-fra.com

Conversion du type de bit en Oui ou Non par requête SQL Server 2005

Je veux convertir le type bit en Oui ou Non 

Par exemple:

SELECT FirstName, LastName, IsMale from members

Résultats:

Ramy    Said    1  

Résultat attendu:

Ramy    Said    Yes  
22
Ramy Said

Vous pouvez le faire en utilisant une expression de cas recherché :

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

Voici:

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

Fondamentalement, vous utilisez une instruction CASE pour vous permettre de convertir la valeur. Si vous aviez trois choix, vous pouvez toujours utiliser l'instruction case et ajouter une autre option (évidemment, vous ne pouvez pas avoir trois options avec un bit, mais si le champ était un entier, etc.) L'instruction ELSE est l'instruction par défaut qui est exécutée. si vous n'obtenez pas une correspondance. Dans notre cas, nous l'utilisons simplement pour Non, car nous ne pouvons avoir que oui ou non, mais dans le cas d'une instruction plus grande, CASE, vous voudriez l'utiliser comme champ de secours. Par exemple, vous pouvez dire "Élément introuvable" si vous convertissez des éléments.

6
IAmTimCorey

Utilisez une CASE;

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

Utilisez un IIF() qui est disponible à partir du SQL Server 2012.

Il y a un autre moyen d'y parvenir. (façon abrégée (peut-être pas)) . Cela utilise IIF(). Voir ci-dessous.

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

SQL Server 2012 introduit deux nouveaux mots-clés FORMAT et IIF qui peuvent fournir un moyen plus compact de convertir un entier ou un bit en chaîne:

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

Mais pour convertir un type bit en Yes ou No, j'utiliserais maintenant:

PRINT 'Hello '+IIF(@MyBit=1,'Yes','No')
1
Chris Walsh