texto - Convertir el tipo de bit a Sí o No por consulta SQL Server 2005
tipos de datos en sql server (5)
Quiero convertir el tipo de bit
a Sí o No
Por ejemplo:
SELECT FirstName, LastName, IsMale from members
Resultados:
Ramy Said 1
Resultado Esperado:
Ramy Said Yes
Aqui tienes:
SELECT FirstName, LastName, CASE WHEN IsMale = 1 THEN ''Yes'' ELSE ''No'' END AS Male
FROM members
Básicamente, utiliza una instrucción CASE
para permitirle convertir el valor. Si tenía tres opciones, aún podría usar la declaración de caso y simplemente agregar otra opción (obviamente no puede tener tres opciones con un poco, pero si el campo era un int, etc.) La declaración ELSE
es la declaración predeterminada que se ejecuta si no consigues una coincidencia En nuestro caso, solo lo usamos para No, ya que solo podemos tener un sí o un no, pero en el caso de una declaración CASE
más grande, querría usar esto como su campo alternativo. Por ejemplo, podría decir "Elemento no encontrado" si estuviera convirtiendo elementos.
Puedes hacer esto usando una expresión de caso buscado :
SELECT
FirstName,
LastName,
CASE WHEN IsMale = 1 THEN ''Yes'' ELSE ''No'' END AS IsMale
FROM
Members
SQL Server 2012 introduce dos nuevas palabras clave FORMAT
y IIF
que pueden proporcionar un medio más compacto para convertir un entero o un bit en una cadena:
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,'''')
Pero para convertir un tipo de bit
a Yes
o No
ahora usaría:
PRINT ''Hello ''+IIF(@MyBit=1,''Yes'',''No'')
Utilice un IIF()
que está disponible en SQL Server 2012
adelante.
Hay otra forma de lograr esto. (forma abreviada (tal vez no)) . Eso es usar IIF()
. Vea abajo.
SELECT
[FirstName],
[LastName],
IIF([IsMale]=1,''Yes'',''No'') AS [IsMale As String]
FROM
[Members]
Utilizar un caso
SELECT
FirstName,
LastName,
CASE IsMale WHEN 1 THEN ''Yes'' ELSE ''No'' END AS IsMale
FROM tbl