Usuário com melhor resposta
Duvida substring

Pergunta
-
Pessoal,
Tenho um campo onde preciso pegar somente os 20 primeiros caracteres, alguem sabe se existem alguma forma de não cortar a ultima palavra ou caso ela seja cortada não exibí-la?
ex.
Declare @X Varchar(30)Set @X= 'teste de substring'
Select Substring(@X,1,15)
o retorno é: 'teste de substr'
Eu precisaria trazer somente 'teste de'
ou trazer a ultima palavra completa sem que seja cortada.
grato,
Respostas
-
Fabiano,
Não cortar a palavra, ou seja, dependendo do tamanho ela deverá aparecer ou não?
Talvez, seja o caso de utilizar a função CharIndex!!!!
Veja se este exemplo ajuda:
Code SnippetCreate
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)Len(Nome))
From #ListarNomes Where Codigo = @ContadorPrint 'Nome do Usuário formatado -->:'+@NomeFormatado
Set @Contador = @Contador + 1
End
-
usando o exemplo do junior veja se ajuda
Create 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')
---
Select Substring(Nome,1,Charindex(' ',Nome, 15-PatIndex ('% %', Nome)))
from #ListarNomesAbs/
Todas as Respostas
-
Fabiano,
Não cortar a palavra, ou seja, dependendo do tamanho ela deverá aparecer ou não?
Talvez, seja o caso de utilizar a função CharIndex!!!!
Veja se este exemplo ajuda:
Code SnippetCreate
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)Len(Nome))
From #ListarNomes Where Codigo = @ContadorPrint 'Nome do Usuário formatado -->:'+@NomeFormatado
Set @Contador = @Contador + 1
End
-
usando o exemplo do junior veja se ajuda
Create 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')
---
Select Substring(Nome,1,Charindex(' ',Nome, 15-PatIndex ('% %', Nome)))
from #ListarNomesAbs/
-