Pesquisa uma expressão caracter e retorna a primeira posição encontrada
Exemplo da Rotina:
SELECT CHARINDEX('Trecho Procurado', 'Texto')
Exemplo 1- Busca a Posição de um determinado Texto, no exemplo abaixo a palavra que vou buscar é PEDIDO:
SELECT
C5_HASHPT,
C5_MENNOTA,
CHARINDEX('PEDIDO', C5_MENNOTA)
C5_NUM
FROM
SC5080
WHERE
C5_HASHPT =''
AND C5_MENNOTA <>''
AND C5_EMISSAO >'20190607'
AND D_E_L_E_T_ <>'*'
Exemplo 2- Com a posição do campo obtida, agora conseguimos dar um SUBSTRING para pegar o texto a partir dessa posição:
SELECT
C5_HASHPT,
C5_MENNOTA,
CHARINDEX('PEDIDO', C5_MENNOTA),
SUBSTRING(C5_MENNOTA,CHARINDEX('PEDIDO', C5_MENNOTA),20)
C5_NUM
FROM
SC5080
WHERE
C5_HASHPT =''
AND C5_MENNOTA <>''
AND C5_EMISSAO >'20190607'
AND D_E_L_E_T_ <>'*'
Exemplo 3- Demonstrando o funcionamento com textos pré-definidos:
SELECT
'DANIEL ATILIO' AS NOME,
CHARINDEX('ATILIO', 'DANIEL ATILIO') AS POSIC_INI
Exemplo 4- Mostrando uma descrição filtrada com CHARINDEX:
SELECT
B1_COD AS CODIGO,
B1_DESC AS DESC_CHEIA,
SUBSTRING(B1_DESC, CHARINDEX('MOTOR', UPPER(B1_DESC)), LEN(B1_DESC)) AS DESC_FILT
FROM
SB1010 SB1
WHERE
B1_FILIAL = ' '
AND UPPER(B1_DESC) LIKE '%MOTOR%'
AND SB1.D_E_L_E_T_ = ' '
Observações:
- Caso tenha dúvidas ou problemas com os exemplos, entre em contato;
- Se tiver sugestões de rotinas, pode entrar em contato;
- Exemplo 1 e 2 enviados por Thiago.Andrrade;