Pasar a letra Capital o mayúsculas y minusculas en SQL SERVER 2005

Introducción

Pasar a letra Capital o mayúsculas y minúsculas o altas y bajas en SQL SERVER 2005

Este articulo lo he construido con la necesidad de poder convertir una cadena delimitada por espacios en una cadena tipo Capital o altas y Bajas.

Espero comentarios de ustedes los cibernautas del trabajo realizado ya que no encontré una función que realizara esta funcionalidad.

1.    PROCEDIMIENTO ALMACENADO

–PasarMayusculasMinusculas ‘OMAR ACOSTA CASAS estudia en la universidad distrital’,’ ‘

CREATE  PROCEDURE  [dbo].PasarMayusculasMinusculas (

      @CadenaxTransformar VARCHAR(8000), — lista a convertir segun delimitador

      @Delimitador VARCHAR(1)  — delimitador para separar la cadena

)

AS

DECLARE @Resultado VARCHAR(8000)

DECLARE @CadenaXSplit VARCHAR(8000)

IF CHARINDEX(@Delimitador,@CadenaxTransformar,0) <> 0

BEGIN

      WHILE CHARINDEX(@Delimitador,@CadenaxTransformar,0) <> 0

       BEGIN

                   SELECT

                    –palabra encontrada hasta el delimitador   

                    @CadenaXSplit=RTRIM(LTRIM(SUBSTRING(@CadenaxTransformar,1,CHARINDEX(@Delimitador,@CadenaxTransformar,0)-1))),

                    –cadena restantes por transformar    

                    @CadenaxTransformar=RTRIM(LTRIM(SUBSTRING(@CadenaxTransformar,CHARINDEX(@Delimitador,@CadenaxTransformar,0)+LEN(@Delimitador),LEN(@CadenaxTransformar))))

                    –si la palabra encontrada de la lista tiene más de tres caracteres la convertimos

                    — primer letra de la cadena en mayuscula y el resto en minusculas 

                    IF (LEN(@CadenaXSplit)> 3)

                        SET @Resultado= ISNULL(@Resultado,) + UPPER(SUBSTRING(@CadenaXSplit,1,1)) +  LOWER(SUBSTRING (@CadenaXSplit,2,LEN(@CadenaXSplit)-1)) + ‘ ‘

                    ELSE

                        SET @Resultado= ISNULL(@Resultado,) + LOWER(@CadenaXSplit) + ‘ ‘

       END

end

— esta validación se requiere cuando se llega al final de la cadena o si la cadena recibida solo tiene una palabra

IF  CHARINDEX(@Delimitador,@CadenaxTransformar,0)  = 0

BEGIN

        IF (LEN(@CadenaXSplit)> 3)

            SET @Resultado= ISNULL(@Resultado,) + UPPER(SUBSTRING(@CadenaxTransformar,1,1)) +  LOWER(SUBSTRING (@CadenaxTransformar,2,LEN(@CadenaxTransformar)-1)) + ‘ ‘

        ELSE

            SET @Resultado= ISNULL(@Resultado,) + LOWER(@CadenaxTransformar) + ‘ ‘

END

PRINT  @Resultado

GO

 

Copie el anterior procedimiento almacenado y ejecútelo en una instancia de la BD donde quiere utilizarlo.

Y ejecute la siguiente instrucción para que observe el resultado (ejecutamos el SP pasándole la cadena y el delimitador)

EXEC PasarMayusculasMinusculas ‘OMAR ACOSTA CASAS estudia en la universidad distrital’,‘ ‘

 

El resultado obtenido es:

 

 

2.    FUNCION

 

El procedimiento almacenado le e convertido en una función para su mejor aplicabilidad. Suponiendo que queremos actualizar campos de una BD que no tengan el formato de letra capital o mostrar resultados al usuario en este tipo de letra (Capital),  al final encuentra un ejemplo con el uso de la función fnPasarMayusculasMinusculas.

Ejecute esta función en una instancia de la BD SQL Server donde la quiere utilizar la función

 

ALTER  FUNCTION  [dbo].[fnPasarMayusculasMinusculas] (

      @CadenaxTransformar VARCHAR(8000), — lista a convertir segun delimitador

      @Delimitador VARCHAR(100)  — delimitador para separar la cadena

)RETURNS VARCHAR(8000)

BEGIN

DECLARE @Resultado VARCHAR(8000)

DECLARE @CadenaXSplit VARCHAR(8000)

IF CHARINDEX(@Delimitador,@CadenaxTransformar,0) <> 0

BEGIN

      WHILE CHARINDEX(@Delimitador,@CadenaxTransformar,0) <> 0

       BEGIN

                   SELECT

                    –palabra encontrada hasta el delimitador   

                    @CadenaXSplit=RTRIM(LTRIM(SUBSTRING(@CadenaxTransformar,1,CHARINDEX(@Delimitador,@CadenaxTransformar,0)-1))),

                    –cadena restantes por transformar    

                    @CadenaxTransformar=RTRIM(LTRIM(SUBSTRING(@CadenaxTransformar,CHARINDEX(@Delimitador,@CadenaxTransformar,0)+LEN(@Delimitador),LEN(@CadenaxTransformar))))

                    –si la palabra encontrada de la lista tiene más de tres caracteres la convertimos

                    — primer letra de la cadena en mayuscula y el resto en minusculas 

                    IF (LEN(@CadenaXSplit)> 3)

                        SET @Resultado= ISNULL(@Resultado,) + UPPER(SUBSTRING(@CadenaXSplit,1,1)) +  LOWER(SUBSTRING (@CadenaXSplit,2,LEN(@CadenaXSplit)-1)) + ‘ ‘

                    ELSE

                        SET @Resultado= ISNULL(@Resultado,) + @CadenaXSplit + ‘ ‘

       END

end

— esta validación se requiere cuando se llega al final de la cadena o si la cadena recibida solo tiene una palabra

IF  CHARINDEX(@Delimitador,@CadenaxTransformar,0)  = 0

BEGIN

        IF (LEN(@CadenaXSplit)> 3)

            SET @Resultado= ISNULL(@Resultado,) + UPPER(SUBSTRING(@CadenaxTransformar,1,1)) +  LOWER(SUBSTRING (@CadenaxTransformar,2,LEN(@CadenaxTransformar)-1)) + ‘ ‘

        ELSE

            SET @Resultado= ISNULL(@Resultado,) + @CadenaxTransformar + ‘ ‘

END

RETURN  @Resultado

END

 

Realice una consulta a una tabla de la base de datos donde adiciono la función, yo en mi ejemplo utilizo una tabla conContactos y por medio de la función fnPasarMayusculasMinusculas conContactos muestro en la segunda columna la cadena convertida en letra capital.

El resultado obtenido es:

  

 

About omaracostacasas

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

One Response to Pasar a letra Capital o mayúsculas y minusculas en SQL SERVER 2005

  1. ayelen says:

    ¡¡¡¡¡¡FELIZ 2009 A TODA LA COMUNIDAD !!!!!!!!!!!!!! Hola, como estas, mi nombre es Nicolas, quería felicitarte por tu pagina, te comento que lance un nuevo sitio, el cual es de ayuda para hacer publicidad gratis, debido a que soy el creador de un nuevo sistema de marketing por Internet, este es el Marketing Mega Virtual. Esto es la combinación de las diferentes tácticas para hacer publicidad en la red, dando como resultado la expansión de una empresa en pocos meses, lo que es mejor, es gratis, ya que se utilizan los recursos de Internet, espero que pases por mi sitio y que sea de tu agrado, ya que en la misma voy a enseñar estas técnicas en forma totalmente gratis, si te interesa podemos hacer un intercambio de links, cualquier cosa avisame, te dejo mi email tvinternet08@gmail.com, te mando un abrazo. El equipo de Marketing Mega Virtual.

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