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;