Usuário com melhor resposta
Consulta Sql: Converter primeira letra da string para maiúscula

Pergunta
-
Olá pessoal,
gostaria de saber se existe maneira de passar o primeiro caractere de uma string do banco para maiúscula
Ex. Select nm_customer From Customer Where cd_customer = 1
Retorno: 'ANTONIO CARLOS'.
Mas na verdade eu queria que aparecesse: 'Antonio Carlos'.O lower não dá para usar pois passa todos os caracteres para minúsculo.
Agradeço desde já,
Diego A.
quarta-feira, 10 de outubro de 2007 12:08
Respostas
-
De uma olhdada se ajuda?:
create Function Ufn_FirstCapital (@String Varchar(5000))
Returns Varchar(5000)
BeginDeclare @RetornoString Varchar(5000)
Declare @Start Int, @end Int
Select @Start = 2, @end = Len(@String)
Select @RetornoString = Upper(Left(@String,1))
While @start <= @End
Begin
If substring(@String,@Start,1) = ' '
Begin
Select @Start = @start + 1
Select @RetornoString = @RetornoString + ' ' + Upper(substring(@String,@Start,1))
End
Else
Begin
Select @RetornoString = @RetornoString + substring(@String,@Start,1)
End
Select @Start = @start + 1
End
Return @RetornoString
EndDeclare @nome varchar(50)
select @nome = 'marcelo colla'
-- agora veja se vc. nao quer colocar como maiscula dos de da tipo antonio da silva Antorni da Silva , ai precisa alterar um pouco a funcao, qualquer coisa retorne.
Select dbo.Ufn_FirstCapital(@nome)quarta-feira, 10 de outubro de 2007 12:34 -
Diego,
Veja este exemplo:
Code BlockCreate Table #ListarNomes
(Codigo Int Identity(1,1),
Nome VarChar(50))Insert #ListarNomes Values('Junior Galvão')
Insert #ListarNomes Values('Eduardo Graça')
Insert #ListarNomes Values('Fernanda Galva')
Insert #ListarNomes Values('João Silva Galvez')
Insert #ListarNomes Values('Marcio de Jesuita Gernando')
Insert #ListarNomes Values('Marcio de Jnoas Belo de Garcia')
Declare @PosicaoEspaco Int,
@Contador Int,
@NomeFormatado VarChar(50)
Set @Contador=0While @Contador <= (Select Count(*) from #ListarNomes)
Begin
Set @PosicaoEspaco=(Select PatIndex('% %',Nome) From #ListarNomes Where Codigo = @Contador)Select @NomeFormatado=Upper(Substring(Nome,1,1))+SubString(Nome,2, @PosicaoEspaco-1)+
Upper(SubString(Nome,@PosicaoEspaco+1,1))+SubString(Nome,@PosicaoEspaco+2,Len(Nome))
From #ListarNomes
Where Codigo = @ContadorPrint 'Nome do Usuário formatado -->:'+@NomeFormatado
Set @Contador = @Contador + 1
Endquarta-feira, 10 de outubro de 2007 13:46
Todas as Respostas
-
De uma olhdada se ajuda?:
create Function Ufn_FirstCapital (@String Varchar(5000))
Returns Varchar(5000)
BeginDeclare @RetornoString Varchar(5000)
Declare @Start Int, @end Int
Select @Start = 2, @end = Len(@String)
Select @RetornoString = Upper(Left(@String,1))
While @start <= @End
Begin
If substring(@String,@Start,1) = ' '
Begin
Select @Start = @start + 1
Select @RetornoString = @RetornoString + ' ' + Upper(substring(@String,@Start,1))
End
Else
Begin
Select @RetornoString = @RetornoString + substring(@String,@Start,1)
End
Select @Start = @start + 1
End
Return @RetornoString
EndDeclare @nome varchar(50)
select @nome = 'marcelo colla'
-- agora veja se vc. nao quer colocar como maiscula dos de da tipo antonio da silva Antorni da Silva , ai precisa alterar um pouco a funcao, qualquer coisa retorne.
Select dbo.Ufn_FirstCapital(@nome)quarta-feira, 10 de outubro de 2007 12:34 -
Diego,
Veja este exemplo:
Code BlockCreate Table #ListarNomes
(Codigo Int Identity(1,1),
Nome VarChar(50))Insert #ListarNomes Values('Junior Galvão')
Insert #ListarNomes Values('Eduardo Graça')
Insert #ListarNomes Values('Fernanda Galva')
Insert #ListarNomes Values('João Silva Galvez')
Insert #ListarNomes Values('Marcio de Jesuita Gernando')
Insert #ListarNomes Values('Marcio de Jnoas Belo de Garcia')
Declare @PosicaoEspaco Int,
@Contador Int,
@NomeFormatado VarChar(50)
Set @Contador=0While @Contador <= (Select Count(*) from #ListarNomes)
Begin
Set @PosicaoEspaco=(Select PatIndex('% %',Nome) From #ListarNomes Where Codigo = @Contador)Select @NomeFormatado=Upper(Substring(Nome,1,1))+SubString(Nome,2, @PosicaoEspaco-1)+
Upper(SubString(Nome,@PosicaoEspaco+1,1))+SubString(Nome,@PosicaoEspaco+2,Len(Nome))
From #ListarNomes
Where Codigo = @ContadorPrint 'Nome do Usuário formatado -->:'+@NomeFormatado
Set @Contador = @Contador + 1
Endquarta-feira, 10 de outubro de 2007 13:46 -
Obrigado Marcelo,
funcionou perfeitamente, estou usando o seu exemplo.
Obrigado também Júnior, o seu também funcionou.
Diego A.
quarta-feira, 10 de outubro de 2007 14:16 -
Diego,
Obrigado pelo retorno.
quarta-feira, 10 de outubro de 2007 16:42 -
Para essa função do Marcelo ficar perfeita só colocar a linha em negrito na função para não precisar se preocupar se a string vem com lower e upper case mixados:
Ufn_FirstCapital (@String Varchar(5000))
Returns Varchar(5000)
Begin
Set @String = Lower(@String )
Declare @RetornoString Varchar(5000)
quarta-feira, 6 de janeiro de 2010 09:51 -
Cleber,
Por gentileza, não temos o habito de responder mensagens muito antigas, para evitar poluição de post no fórum.
Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBAquarta-feira, 6 de janeiro de 2010 23:10