Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Como hago para que me duvuelva un literal en vez de un valor numerico

Estas en el tema de Como hago para que me duvuelva un literal en vez de un valor numerico en el foro de SQL Server en Foros del Web. Bueno, mi consulta es la siguiente. Yo realizo una consulta y quiero que en los resultados que me devuelve, en vez de devolverme un valor ...
  #1 (permalink)  
Antiguo 30/08/2010, 11:16
 
Fecha de Ingreso: marzo-2008
Mensajes: 99
Antigüedad: 16 años, 1 mes
Puntos: 1
Como hago para que me duvuelva un literal en vez de un valor numerico

Bueno, mi consulta es la siguiente. Yo realizo una consulta y quiero que en los resultados que me devuelve, en vez de devolverme un valor numerico (que es el que se encuentra grabado en la base de datos) lo quiero reemplazar por alguna palabra.

Dejo el siguiente ejemplo:

Código:
SELECT     Sexo, Peso
FROM         dbo.Obstetrica
Esto retorna como resultado:
Código:
      SEXO            Peso
   	    0	      3,2300000190734863
   	    0	      2,2999999523162842
   	    1	      2,9800000190734863
   	    0	      3,5
   	    1	      3,0999999046325684
Lo que yo quiero hacer es que en vez de retornarme 0 y 1 me retorne Masculino(0) y Femenino (1)

Código:
      SEXO            Peso
   Masculino	      3,2300000190734863
   Masculino	      2,2999999523162842
   Femenino	      2,9800000190734863
   Masculino	      3,5
   Femenino	      3,0999999046325684
No se si es posible realizar esto con el sql??????
  #2 (permalink)  
Antiguo 30/08/2010, 14:03
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Como hago para que me duvuelva un literal en vez de un valor numerico

Si, utiliza CASE para esta y otras situaciones similares

Código SQL:
Ver original
  1. CASE WHEN columna = 0 THEN 'Masculino' ELSE 'Femenino' END
  #3 (permalink)  
Antiguo 30/08/2010, 14:23
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Como hago para que me duvuelva un literal en vez de un valor numerico

Hola lordphoenixs, ya iislas te dio la solución, te pongo otra sintaxis alternativa para el case:

Código SQL:
Ver original
  1. SELECT
  2. CASE Sexo
  3. WHEN 0 THEN 'Masculino'
  4. WHEN 1 THEN 'Femenino'
  5. END AS Sexo, Peso
  6. FROM dbo.Obstetrica

Sin embargo, por experiencia propia no recomiendo este tipo de codificación en las consultas. Lo ideal sería que definieras un catálogo de sexos y entonces hacer un inner join con este catálogo. Quedaría más o menos así:

Código SQL:
Ver original
  1. CREATE TABLE [dbo].[cat_sexos](
  2.     [sexo] [INT] NOT NULL,
  3.     [descripcion] [VARCHAR](10) NOT NULL
  4. )
  5.  
  6. INSERT INTO dbo.cat_sexos(sexo, descripcion) VALUES (0, 'Masculino')
  7. INSERT INTO dbo.cat_sexos(sexo, descripcion) VALUES (1, 'Femenino')
  8.  
  9. SELECT
  10. b.Sexo, a.Peso
  11. FROM dbo.Obstetrica a INNER JOIN dbo.cat_sexos b ON b.sexo = a.sexo

Esta sería una solución más formal, faltando aun definir las llaves y las relaciones entre las tablas, pero si eres dba te ahorrará problemas en el futuro.

Saludos
Leo.
  #4 (permalink)  
Antiguo 30/08/2010, 15:13
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Como hago para que me duvuelva un literal en vez de un valor numerico

100% De acuerdo con Leonardo
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 30/08/2010, 20:16
 
Fecha de Ingreso: marzo-2008
Mensajes: 99
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: Como hago para que me duvuelva un literal en vez de un valor numerico

muchas gracias iislas y leonardo_josue por responderme y me funciono. Gracias por el consejo leonardo_josue.

El tema ya esta resulto.

Etiquetas: numerico
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:31.