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:


¡¡¡¡¡¡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.