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

[SOLUCIONADO] Nules(NULL) en SELECT por parametros

Estas en el tema de Nules(NULL) en SELECT por parametros en el foro de Bases de Datos General en Foros del Web. Hola. Tengo una duda con un procedimiento en SQLServer que estoy realizando. Tiene que buscar si existen registros en una tabla antes de realizar ciertas ...
  #1 (permalink)  
Antiguo 19/09/2016, 01:42
 
Fecha de Ingreso: abril-2015
Mensajes: 11
Antigüedad: 9 años
Puntos: 0
Nules(NULL) en SELECT por parametros

Hola.

Tengo una duda con un procedimiento en SQLServer que estoy realizando. Tiene que buscar si existen registros en una tabla antes de realizar ciertas acciones.
No se si existe alguna manera sencilla de hacer que esa búsqueda busque también si el valor es nulo(NULL), puesto que en ocasiones hay parámetros que toman el valor NULL.

Ejemplo:
Código SQL:
Ver original
  1. SELECT * FROM Personas p  WHERE p.Descripcion = @descripcion

En caso que @descripcion sea NULL necesitaría todas las clases cuya descripción fuese NULL. En este ejemplo no mostraría ninguna, a no ser que use c.Descripcion IS NULL.

¿Hay alguna sintaxis que admita esto? o tengo que hacer comprobaciones anteriores para ver si es NULL y en ese caso poner un IS NULL.

PD: El código que uso ahora para comprobarlo en la select es:
Código SQL:
Ver original
  1. [...] WHERE 1 = CASE WHEN @descripcion IS NULL AND p.Descripcion IS NULL THEN 1 WHEN p.Descripcion = @descripcion THEN 1 ELSE 0 END

Gracias.

Última edición por gnzsoloyo; 21/09/2016 a las 18:04 Razón: Posible solución
  #2 (permalink)  
Antiguo 19/09/2016, 10:04
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Nules(NULL) en SELECT por parametros

Sencillo:

Código SQL:
Ver original
  1. SELECT * FROM Personas p  WHERE p.Descripcion = @descripcion OR isnull(p.descripcion,'')=''

Para esto no ocupas un case :P
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 20/09/2016, 00:56
 
Fecha de Ingreso: abril-2015
Mensajes: 11
Antigüedad: 9 años
Puntos: 0
Respuesta: Nules(NULL) en SELECT por parametros

He probado la solución que me comentas, pero muestra todos los registros con el valor de @descripcion más los registros con el valor NULL o vacío. Y en el caso de @descripcion = NULL solo los NULL.

Mi intención es mostrar únicamente los valores que coincidan con @descripcion.
Si tiene valor solo los coincidentes y si tiene valor NULL solo los NULL.

Siento si no me expliqué bien.

Última edición por Numon; 20/09/2016 a las 01:32
  #4 (permalink)  
Antiguo 20/09/2016, 09:02
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Nules(NULL) en SELECT por parametros

Eso que dices no se puede hacer en un solo query ya que son 2 condiciones excluyentes una de la otra, si es valor entonces que no sea null y si es null entonces que no tenga un valor, por lo que deberias de hacer un script mas o menos como este:

Código SQL:
Ver original
  1. IF (isnull(@descripcion,'')=''
  2.   BEGIN
  3.     SELECT * FROM Personas p  WHERE p.Descripcion = NULL
  4.   END
  5. ELSE
  6.   BEGIN
  7.     SELECT * FROM Personas p  WHERE p.Descripcion = @descripcion
  8.   END
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 21/09/2016, 15:56
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: Nules(NULL) en SELECT por parametros

¿No es IS NULL?
__________________
MCTS Isaias Islas
  #6 (permalink)  
Antiguo 26/09/2016, 02:05
 
Fecha de Ingreso: abril-2015
Mensajes: 11
Antigüedad: 9 años
Puntos: 0
Respuesta: Nules(NULL) en SELECT por parametros

Gracias por la respuesta.

Si, imagino que en la linea 3 es:

Código SQL:
Ver original
  1. SELECT * FROM Personas p  WHERE p.Descripcion IS NULL
  #7 (permalink)  
Antiguo 26/09/2016, 07:36
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Nules(NULL) en SELECT por parametros

No, que no estas pidiendo que si es null busque los valores null, y que si la descripcion trae valor entonces busque la descripcion?

entonces


Código SQL:
Ver original
  1. IF (isnull(@descripcion,'')=''--validamos si la descripcion es null
  2.   BEGIN
  3.     SELECT * FROM Personas p  WHERE p.Descripcion = NULL--en caso afirmativo buscamos los valores con NULL
  4.   END
  5. ELSE
  6.   BEGIN
  7.     SELECT * FROM Personas p  WHERE p.Descripcion = @descripcion --de lo contrario buscamos los valores que traen una descripcion
  8.   END
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: nulos, sql
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 23:21.