Ir para conteúdo
Fórum Script Brasil
  • 0

REPLACE NO CACHÉ


CAIO.EXE

Pergunta

1 resposta a esta questão

Posts Recomendados

  • 0
gostaria de saber se há alguma função similar ao REPLACE do SQL no CACHE!
CAIO.EXE, pelo que é possível verificar no Caché SQL Reference, não há.

Ainda não tinha ouvido falar neste banco mas, para tentar dar uma luz, acredito que por analogia a outros bancos você possa implementar uma procedure ou function (não saberia dizer qual você utilizaria - mas imagino que você possa saber) que recebesse e devolvesse as informações através de parâmetros.

Normalmente a função REPLACE recebe os parâmetros (<expressão>, <procurar por>, <substituir por>) e para implementá-la precisaríamos alguns equivalentes ao que estamos acostumados a ver em programação:

Equivale ao SubString: $EXTRACT(StrValue, StartPos, EndPos)

Equivale ao Pos: $FIND(StrValue, SubString)

Na implementação da procedure, os parâmetros seriam:

- entrada => StrExpression, StrToSearch, StrToReplace

- saída => Result (testo retornado)

Este seria um esqueleto/exemplo baseado nas informações encontradas no guia de referência:

CREATE PROCEDURE REPLACE 
                  (IN StrExpression  VARCHAR(100),
                   IN StrToSearch  VARCHAR(50),
                   IN StrToReplace  VARCHAR(50),
                   OUT Result  VARCHAR(150))
BEGIN
  LANGUAGE OBJECTSCRIPT
  {
    SET StrPos=$FIND(StrExpression, ToFind)
    If (StrPos > 0) {
      SET ResultBegin = $EXTRACT(StrExpression, 1, StrPos -1)
      SET ResultEnd = $EXTRACT(StrExpression, StrPos +$LEN(StrToSearch) +1)
      SET Result = ResultStart + StrToReplace + ResultEnd
    } else {
      SET Result = StrExpression
    }
  }
END
*Não está claro na documentação se as funções utilizadas são case-sensitive. Supondo que algo assim funcione, os parâmetros VARCHAR devem ter seus tamanhos definidos de modo a acomodar as informações que você pretende passar. Pelo que consta em SQL Data type, parece não haver como um tipo string de tamanho indefinido. No Firebird, por ex., usar esta procedure em uma consulta SQL seria feita do seguinte modo:
SELECT Nome, REPLACE(Nome, 'MARIO', 'MARIA').Result
FROM TabNOME

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...