FUNCIONES COALESCE, NULLIF Y UPPER EN SQL SERVER 2005

Devuelve la primera expresión distinta de NULL entre sus argumentos

OBJETIVO: observar en que momentos es útil la función COALESCE que incorpora SQL server 2005 o 2008

–Devuelve la primera expresión distinta de NULL entre sus argumentos.

  –EJEMPLO CON CADENAS DE TIPO STRING

DECLARE @NOMBRE VARCHAR(80)

–SI EL VALOR ES NULL O ” OBTENER TODAS LA CIUDADES SINO FILTAR POR EL PARAMETRO @NOMBRE

SET @NOMBRE=‘%’ + null + ‘%’

select * from

admCiudad

where admCiudad.ciudadNombre like COALESCE(NULLIF(@NOMBRE,),admCiudad.ciudadNombre)

  –EQUIVALENTE

select * from

admCiudad

where admCiudad.ciudadNombre LIKE admCiudad.ciudadNombre

  –OTRO EJEMPLO CON VALORES NÚMERICOS

–OBTENER TODAS LAS CIUDADES

DECLARE @PAIS INT

SET @PAIS= null

select * from

admCiudad

where admCiudad.paisId = COALESCE(@PAIS,admCiudad.paisId )

–OBTENER TODAS LAS CIUDADES

DECLARE @PAIS INT

–SI CAMBIA EL VALOR NULL POR UN VALOR DE PAIS VALIDO OBTENDRA SOLO LAS CIUDADES

–QUE SU CODIGO DE PAIS SEA EL ESPECIFICADO EJEMPLO (1)

–SET @PAIS= 1

SET @PAIS= NULL

select * from

admCiudad

where admCiudad.paisId = COALESCE(@PAIS,admCiudad.paisId )

–EQUIVALENTE

select * from

admCiudad

where admCiudad.paisId = admCiudad.paisId

 

Ejemplo para utilizar la función COALESCE en una consulta con varios parametros en el where:

El código NULLIF(@TipoEnvioId,” ) indica que si el valor del parametro de entrada @TipoEnvioId es NULL le asigne una cadena vacia ”.

La función UPPER es utilizada para obtener valores en mayusculas en el ejemplo del select el campo envEnvio.usuarioCreacionId se obtendra en mayusculas.

 

CREATE PROCEDURE [dbo].[envEnvioXBusquedaXCriterios]

(

    @TipoEnvioId                    SMALLINT,

    @FechaInicio                    VARCHAR(20),

    @FechaFinal                        VARCHAR(20)

    )

AS

SELECT        envEnvio.envioId AS EnvioId,

            envEnvio.envioDescripcion AS Descripcion,

            envEnvio.tipoEnvioId AS TipoEnvioId,

            admTipoEnvio.tipoEnvioNombre AS TipoEnvioNombre,

            envEnvio.fechaCreacion as FechaCreacion,

            UPPER(envEnvio.usuarioCreacionId) as UsuarioCreacion

            

FROM envEnvio

            INNER JOIN admTipoEnvio ON envEnvio.tipoEnvioId = admTipoEnvio.tipoEnvioId

WHERE        (envEnvio.tipoEnvioId = COALESCE(NULLIF(@TipoEnvioId,),envEnvio.tipoEnvioId ))

            AND (envEnvio.fechaCreacion BETWEEN COALESCE(@FechaInicio,envEnvio.fechaCreacion) AND COALESCE(@FechaFinal,envEnvio.fechaCreacion))

ORDER BY    envEnvio.fechaCreacion DESC

 

About these ads

About omaracostacasas

ING SOFTWARE
This entry was posted in SQL Server. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s