Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-07-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 26
Delphius Va camino a la fama
convertir mayusculas y minusculas. Solo la primera letra en Mayusculas

Buenas, llevo un tiempo intentando hacer que mi cabeza produzca alguna idea ingeniosa o por lo menos más sencilla ante una situación:

En mi trabajo estoy empleando SQL Server y los usuarios del sistema (que no lo hice yo) han ido ingresando los datos a su propio gusto. Hay datos tanto en minusculas como en mayusculas y esto para el jefe le resulta molesto....

Dediqué un tiempo en pensar de que modo puedo hacer para modificar todos los registros de modo tal que la unica letra en mayúscula sea la primera de cada palabra. Es decir que si en un campo existe algo como:
ABCDE FGHI JKLM, o abcde fghi jklm convertirlo a: Adcde Fghi Jklm

Lo más natural es crear un procedimiento almacenado.... pero hasta el momento no logrado hacer dicho propósito. Nunca me he topado con algo como esto.

Les agradecería, que si aguien tiene un tiempo, que me de unos consejos o guia de como proceder.

No es urgente. No hay prisa... cualquier ayuda será bien recibida.
Desde ya muchas gracias.

Saludos,
PD: Si hacen faltas detalles, veré si puedo estar en las condiciones de poder darlos a conocer.
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #2  
Antiguo 18-07-2007
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 24
poliburro Va por buen camino
Está función igual puede servirte.

Select Databae.Owner.FcMinMayTexto('PEPE PECAS pica papas')

Que sería en tu tabla

Código SQL [-]

Update Table
    Set Campo = Modificada.CampoMod
From (
        Select Llave, 
                 Databae.Owner.FcMinMayTexto(Campo) As CampoMod
          From Tabla     
       ) As Modificada
Where Table.Clave = Modificada.Llave

Suerte

Código SQL [-]
 
IF EXISTS (SELECT * 
    FROM   sysobjects 
    WHERE  name = N'FcMinMayTexto')
 DROP FUNCTION FcMinMayTexto
GO
Create  FUNCTION FcMinMayTexto
 (@Ptexto As Varchar(100))
RETURNS VarChar(100)
AS
 BEGIN
   Declare
     @ViPos As Integer,       --Define la posicion del espacio en blanco en el texto
     @VSAux  As Varchar(100), 
     @VSRes  As Varchar(100), --Almacena el texto resultado
     @VSSubS As Varchar(100)  --Almacena la subcadena cuya posicion inicia con el primer espacio en blanco encontrado dentro del texto
     
   Set @VSSubS = Upper(LTrim(RTrim(@PTexto)))
   Set @ViPos = 1  
   Set @VSRes = ''
   
   --Bloque que analiza las dos primeras letras del texto para saber donde inician las letras y convertirla a mayúscula-
   Set @VSAux = Substring(@VSSubS,@ViPos,1)
   If  Ascii(@VsAux) < 65 Or Ascii(@VsAux) > 90 Or Ascii(@VsAux) = 209
     Begin
       Set @VSAux = Substring(@VSSubS,@ViPos + 1,1)        
       If Ascii(@VsAux) < 65 Or Ascii(@VsAux) > 90 Or Ascii(@VsAux) = 209
        begin
          Set @ViPos = @ViPos + 1
        End
       Set @VSSubs = Lower(@VSSubs)
       Set @VSSubs = Substring(@VSSubS,1,@ViPos) + Upper(Substring(@VSSubS,@ViPos + 1,1)) + Substring(@VSSubS,@ViPos + 2,Len(@VSSubS))   
       Set @Vipos = 10 --De esta manera le digo al siguiente bloque si debe o no convertir a minúsculas el texto
     End
  If @ViPos < 10
    Set @VSSubs = Lower(@VSSubs)
  --El siguiente bloque separa en palabras la cadena de texto y convierte en mayuscula la primera letra de cada una
  While @ViPos > 0 
    Begin
      Set @ViPos  = charIndex(' ',@VSSubS) 
      Set @VSAux  = Substring(@VSSubS,0,@ViPos + 1)
      Set @VSAux  = Upper(Left(@VSAux,1)) + Substring(@VSAux,2,Len(@VSAux))
      Set @VSRes  = @VSRes + @VSAux
      Set @VSSubS = Substring(@VSSubS,@ViPos + 1,Len(@VSSubS)) 
    End
  Return @VSRes + Upper(Left(@VSSubS,1)) + Substring(@VSSubS,2,Len(@VSSubS))
END
GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO
__________________
Conoce mi blog http://www.edgartec.com

Última edición por poliburro fecha: 19-07-2007 a las 00:50:39.
Responder Con Cita
  #3  
Antiguo 21-07-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 26
Delphius Va camino a la fama
poliburro, muchas gracias por dedicar tiempo y esfuerzo para ayudarme.

Todavía no he probado el código que tu me pasaste... con solo verlo me doy cuenta de que posiblemente a mi me llevase meses hacer algo así.

Como no dispongo de internet en el trabajo no puedo estar preguntando en los foros si es que voy haciendo bien o mal algunas cosas... asi que si tengo nuevas novedades o dudas tendré que esperar a llegar a casa para consultar.

Muchas gracias. Lo probaré en cuanto pueda.
Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Validar con mayusculas y minusculas marceloalegre SQL 2 24-06-2005 00:06:05
Mayusculas/minusculas Collates juanpe Firebird e Interbase 2 14-06-2005 14:12:22
Índices mayúsculas/minúsculas sur-se Firebird e Interbase 4 20-09-2004 21:35:31
Controlar Mayusculas o minusculas llonigualker Varios 7 06-05-2004 18:43:07
Mayusculas Y Minusculas jberaza Firebird e Interbase 1 24-05-2003 19:44:32


La franja horaria es GMT +2. Ahora son las 01:02:49.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi