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
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
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.
Utilisez une CASE
;
SELECT
FirstName,
LastName,
CASE IsMale WHEN 1 THEN 'Yes' ELSE 'No' END AS IsMale
FROM tbl
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]
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')