CHARINDEX - Retorna a posição inicial onde a string ("String a ser pesquisada") foi encontrada no texto. Se a tring não for encontrada, a função retorna zero.
Sintaxe: Charindex("String a ser pesquisada",texto)
Exemplo: Select Charindex('a', 'Brasil')
Resultado: 3
SUBSTRING - Retorna uma string com o tamanho definido em "posição final", extraída da string "texto", a partir da "posição inicial".
Sintaxe: Substring("texto", "posição inicial", "posição final")
Exemplo: Select Substring('Brasil hexa campeão', 1, 6)
Resultado: Brasil
LEN - Retorna o tamanho da string informada.
Sintaxe: LEN (string)
Exemplo: Select Len('A copa do mundo é nossa')
Resultado: 23
Um exemplo utilizando as três funções:
Tenho uma coluna (ano) em uma tabela (Copa_Mundo) que possui dados da seguinte forma: 2008_2010 .
Preciso fazer uma consulta que traga esses dados a partir do primeiro caracter depois do '_' até o final da string.
Ficaria assim:
SELECT substring(ano, (charindex('_', ano)+1), LEN (ano)) AS Ano
from Copa_mundo
Resultado:
E se eu quiser pegar apenas o 2008 ?
ResponderExcluirSELECT substring(ano, 0, LEN(ano) - charindex('_', ano) + 1) AS Ano from Copa_mundo
Excluirdepois do (ano,...) é um 0? e esse +1 no final do parenteses, o que significa?
ExcluirEste comentário foi removido pelo autor.
ExcluirNa verdade era pra ser um 0 (zero), e não a letra o.
ExcluirMas usar zero também é errado, porque o índice dos caracteres em uma string é começa em 1 no sql:
1|2|3|4|5|6|7|8|9
2|0|0|8|_|2|0|1|0
Portanto, o correto seria:
SELECT
substring(ano, 1, LEN(ano) - charindex('_', ano)) AS Ano
FROM Copa_mundo
Se eu tenho os dados em uma string "abcde_efg_0012345_hijklm.txt"
ResponderExcluirQuero pegar apenas o '0012345' como faria?
Usei seu exemplo e consegui pegar '0012345_hijklm.txt' o final nao estou conseguindo tirar.
Desde já, agradeço.