Função FINDMULTI( )

Retorna um valor lógico indicando se qualquer cadeia em um conjunto de uma ou mais cadeias especificadas está presente em um campo específico ou em qualquer local no registro.

Sintaxe

FINDMULTI({pesquisar_em|RECORD}; cadeia_1 <;...n>)

Parâmetros

Nome Tipo Descrição
pesquisar_em | RECORD

caractere

O campo ou variável a pesquisar.

Especifique a palavra-chave RECORD para pesquisar o registro inteiro, inclusive qualquer parte indefinida do registro.

Você também pode especificar uma lista de campos concatenando nomes de campos:

Field_1+Field_2+Field_3
cadeia_1 <;...n>

caractere

Um ou mais cadeias de caracteres para pesquisar. Separe várias cadeias de pesquisa com vírgulas:

FINDMULTI(RECORD; "Joa"; "Jim"; "Joh")

A pesquisa não diferencia maiúsculas de minúsculas.

Saída

Lógico. Retorna T (verdadeiro) se qualquer um dos valores especificados de cadeia for encontrado; caso contrário, retorna F (falso).

Exemplos

Exemplos básicos

Pesquisa de um registro inteiro

Retorna T para todos os campos que contêm a cadeia "São Paulo" ou "Porto Alegre" em qualquer campo, cruzando limites de campos e em qualquer parte indefinida do registro. Caso contrário, retorna F:

FINDMULTI(RECORD; "São Paulo"; "Porto Alegre")

Pesquisa por um campo único

Retorna T para todos os registros que contêm a cadeia "São Paulo" ou "Porto Alegre" no campo Cidade. Caso contrário, retorna F:

FINDMULTI(Cidade; "São Paulo"; "Porto Alegre")

Retorna T para todos os registros que contêm a cadeia "Sã" ou "Por" no campo Cidade. Caso contrário, retorna F:

FINDMULTI(Cidade; "Sã"; "Por")

Retorna T para todos os registros que contêm a cadeia "São Paulo" ou "Porto Alegre" precedida por um ou mais espaços no campo Cidade. Caso contrário, retorna F:

FINDMULTI(Cidade; " São Paulo"; " Porto Alegre")

Retorna T para todos os registros com um valor no campo Descrição igual ou que contém qualquer um dos valores nas variáveis v_termo_pesquisa. Caso contrário, retorna F:

FINDMULTI(Descricao; v_termpo_pesquisa_1; v_termo_pesquisa_2; v_termo_pesquisa_3)

Pesquisa de vários campos

Retorna T para todos os registros que contêm a cadeia "São Paulo" ou "Porto Alegre" no campo Cidade ou Cidade_2. Caso contrário, retorna F:

FINDMULTI(Cidade+Cidade_2; "São Paulo"; "Porto Alegre")

Retorna T para todos os registros que contêm a cadeia "São Paulo" ou "Porto Alegre" no campo Cidade ou Cidade_2. Caso contrário, retorna F:

FINDMULTI(Cidade; "São Paulo"; "Porto Alegre") OR FINDMULTI(Cidade_2; "São Paulo"; "Porto Alegre")

Combinação com outras funções

Retorna T para todos os registros com um valor no campo Sobrenome_1 que corresponde ou que contém o valor eliminado do campo Sobrenome_2 ou Sobrenome_3. Caso contrário, retorna F:

FINDMULTI(Sobrenome_1; ALLTRIM(Sobrenome_2); ALLTRIM(Sobrenome_3))

Observações

Quando usar FINDMULTI( )

Use a função FINDMULTI( ) para testar a presença de qualquer das cadeias especificadas em um campo, em dois ou mais campos ou em um registro inteiro.

Como a correspondência funciona

O valor da cadeia pode ser correspondido exatamente ou pode estar contido em uma cadeia mais longa. Os espaços à esquerda nos campos não afetam a pesquisa, a menos que sejam incluídos um ou mais espaços no valor da cadeia.

Pesquisar um registro inteiro

Se você especificar RECORD em vez de um campo pesquisar_em, o registro inteiro será pesquisado, incluindo suas partes indefinidas. As fronteiras dos campos são ignoradas quando o registro inteiro é pesquisado e os espaços à direita nos campos são tratados como caracteres.

Nota

Quando você pesquisar um registro inteiro, será pesquisado o registro físico. Nenhum campo calculado ou campo relacionado é pesquisado.

Pesquisar um subconjunto de campos

É possível concatenar dois ou mais campos no parâmetro pesquisar_em se você quiser pesquisar em um subconjunto dos campos em uma tabela. Por exemplo, para pesquisar os campos Cidade e Cidade_2 para as cadeias "São Paulo" ou "Porto Alegre":

FINDMULTI(Cidade+Cidade_2; "São Paulo"; "Porto Alegre")

Os campos concatenados são tratados como um único campo que inclui os espaços à esquerda e à direita de cada campo, a menos que a função ALLTRIM( ) seja usada para remover espaços.

Também é possível criar uma expressão que pesquisa em cada campo individualmente:

FINDMULTI(Cidade; "São Paulo"; "Porto Alegre") OR FINDMULTI(Cidade_2; "São Paulo"; "Porto Alegre")

Se o valor de cadeia incluir um espaço à esquerda, os resultados da pesquisa das duas abordagens podem ser diferentes.

Diferenciação entre maiúsculas e minúsculas e comparações exatas de caractere

A função FINDMULTI( ) não diferencia maiúsculas de minúsculas e encontra caracteres ASCII e EBCDIC. A função não é afetada pela opção Comparações exatas de caractere (SET EXACT ON/OFF).

Pesquisar em um campo calculado

Para pesquisar em um campo calculado, o nome totalmente qualificado do campo deve ser especificado em pesquisar_em. Por exemplo, se Cidade_Fornecedor for um campo calculado que isola a cidade de um endereço:

FINDMULTI(Cidade_Fornecedor; "São Paulo"; "Porto Alegre")

Pesquisar em um campo relacionado

Para pesquisar em um campo relacionado, o nome totalmente qualificado do campo deve ser especificado (ou seja, tabela.campo nome) no valor pesquisar_em:

FINDMULTI(Fornecedor.Cidade_Fornecedor; "São Paulo"; "Porto Alegre")

Pesquisar dados datahora ou numéricos

É possível usar a função FINDMULTI( ) para pesquisar dados datahora ou numéricos nos registros ao especificar RECORD. A especificação de um campo pesquisar_em não é compatível com a pesquisa de datahora ou numérica.

Os valores de cadeias numéricas ou datahora devem estar entre aspas e precisam corresponder exatamente à formatação dos dados de origem, em vez da formatação da exibição.

Não é permitido usar a função FINDMULTI( ) para pesquisar dados datahora ou numéricos em campos calculados ou relacionados.

Nota

Não recomendamos usar a função FINDMULTI( ) para pesquisar dados datahora ou numéricos porque pode ser difícil conseguir fazê-lo de forma bem-sucedida.