CHARINDEX

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;