O uso é semelhante à solicitação 1s 8.2. Semelhante às condições de consulta

Apesar de todas as deficiências, a pesquisa em campo de texto ainda é uma das mais populares. Podemos encontrar tipos de dados string em todos os lugares - nomes, números de contas, endereços, bem como outras informações podem ser armazenadas neste formato. Em consultas na linguagem 1C integrada, para conveniência dos desenvolvedores, é usado um operador especial “LIKE”. Este é um dos comandos mais utilizados, portanto, sem um conhecimento profundo de sua sintaxe e capacidades, será difícil para um programador trabalhar.

Usando o operador LIKE

Antes de usar qualquer operador na prática, você precisa entender claramente sua finalidade, locais de aplicação e sintaxe. O objetivo de usar “LIKE” em uma solicitação 1C é verificar o cumprimento da condição apresentada como modelo. O valor de retorno é do tipo booleano - verdadeiro ou falso - indicando se a condição especificada é verdadeira. O operador LIKE pode ser usado em vários locais de uma consulta:

  • No bloco de condições, indicado pela palavra-chave “WHERE”;
  • No design da escolha quando então termina;
  • Diretamente nos campos de seleção, como resultado da comparação de campos.

A sintaxe de verificação é sempre a mesma e consiste em 3 links. À esquerda está o valor do texto que está sendo verificado, depois o próprio operador “LIKE” e à direita está o modelo que está sendo verificado. Para criar modelos de forma rápida e fácil, existem símbolos especiais que facilitam o desenvolvimento:

  1. “%” é uma sequência de quaisquer caracteres de comprimento arbitrário. Usado para pesquisar palavras ou números individuais em uma string;
  2. “_” – qualquer caractere único. Destina-se a indicar a presença de um único personagem;
  3. “[...]” é uma sequência de caracteres para comparar com um caractere em uma string. Com a ajuda desse padrão, é verificada a correspondência com qualquer um dos caracteres listados entre colchetes. Você também pode especificar um intervalo de números ou letras ([a-g], );
  4. “[^...]” é o padrão oposto ao anterior. A diferença entre o caractere especificado na linha e os listados entre colchetes é verificada.

Para entender e compreender melhor os princípios de criação de modelos corretos, vejamos alguns exemplos que são frequentemente encontrados na vida dos desenvolvedores. A primeira é quando precisamos selecionar no diretório de nomenclatura todos os itens em cujos nomes aparece a palavra “CUTTER”. Neste caso, precisamos usar LIKE nas condições de consulta:

SELECIONE Nomenclatura.Nome AS Nome FROM Diretório.Nomenclatura AS Nomenclatura ONDE Nomenclatura.Nome SIMILAR a "% CUTTER%"

Se removermos ambos os símbolos “%”, a consulta mostrará um produto cujo nome corresponde completamente ao especificado entre aspas. Se deixarmos o template “CUTTER%” ou “%CUTTER”, então o resultado será uma lista de itens terminando ou começando, respectivamente, com uma determinada combinação de caracteres.


Vejamos um problema que pode confundir programadores novatos que não conhecem a sintaxe de consulta. Digamos que você precise encontrar todos os itens que possuem o símbolo “%” em seus nomes. Principalmente para os casos em que é necessário pesquisar caracteres reservados, existe um operador de “caractere especial”. #,\,/,~ e outros caracteres podem ser usados ​​como caracteres especiais, após os quais quaisquer caracteres reservados denotarão simplesmente um sinal.

SELECIONE Nomenclatura.Nome AS Nome FROM Diretório.Nomenclatura AS Nomenclatura WHERE Nomenclatura.Nome SIMILAR a "%#%" CARÁTER ESPECIAL "#"

Se você precisar usar um parâmetro em uma pesquisa, então a variável na consulta com o parâmetro SIMILAR será usada por adição. Lembre-se que o parâmetro deve ser do tipo string ou você precisará convertê-lo para string na solicitação. Esta é uma operação bastante complicada e é melhor excluí-la antecipadamente.

SELECIONE Nomenclatura.Nome AS Nome FROM Diretório.Nomenclatura AS Nomenclatura ONDE Nomenclatura.Nome SIMILAR a "%" + &nome + "%"

A função SIMILAR é aplicável em todas as versões da plataforma, a partir de 8, e devido à sua aplicabilidade, os desenvolvedores 1C não vão querer alterá-la. É claro que a pesquisa de texto sempre depende da precisão do nome inserido, mas ainda é uma das mais comuns. Nesse sentido, os desenvolvedores profissionais 1C precisam estudar o uso do SIMILAR com todas as suas nuances.

O operador SIMILAR em uma consulta verifica os valores das strings das tabelas quanto à semelhança com um padrão.
É usado da seguinte forma: a string a ser verificada é colocada à esquerda deste operador e o padrão é colocado à direita.

Após a verificação, ele retorna True ou False, respectivamente, e é usado ativamente nas condições.
Os seguintes caracteres de serviço são usados ​​para criar um modelo:

  • % (porcentagem) - uma sequência contendo qualquer número de caracteres arbitrários
  • _ (sublinhado) - um caractere arbitrário
  • […] (um ou mais caracteres entre colchetes) - qualquer caractere listado entre colchetes
    Além disso, além de vários símbolos, você pode usar intervalos, por exemplo a-z(A-z), o que significa a presença de um símbolo arbitrário incluído no intervalo, incluindo as extremidades do intervalo.
  • [^...] (entre colchetes, um sinal de negação seguido por um ou mais caracteres) - qualquer caractere único diferente daqueles listados após o sinal de negação

Os restantes símbolos são utilizados para o fim a que se destinam.
Se for necessário transmitir um dos caracteres de serviço acima como símbolo, então deve ser precedido por<Спецсимвол>. Eu mesmo<Спецсимвол>(qualquer caractere adequado) é definido na mesma instrução após a palavra-chave SPECIAL CHARACTER.
Por exemplo, o padrão “%ABV[abvg]\_abv%” SPECIAL CHARACTER “\” significa uma substring que consiste em uma sequência de caracteres:
letras A; letras B; letras B; um dígito; uma das letras a, b, c ou d; sublinhado; letras a; letras b; cartas v.
Além disso, esta sequência pode ser precedida por um conjunto arbitrário de caracteres.

Procedimento Selecionar AgreementContainingInNameText(mText)
//Na requisição usaremos um template do tipo "%" + mText + "%" Request = New Request; Query.SetParameter("Nome", "%" + Texto + "%"); Request.Text = "SELECT | Contratos. Link, | Contratos. Proprietário | FROM | Diretório. Contratos de Contrapartes AS Contratos | | ONDE | Contratos. Nome SIMILAR & Nome"; Resultado = Consulta.Run(); Seleção = Resultado.Select(); Report("Contratos contendo no nome: " + mText + " possuem as seguintes Contrapartes"); While Selection.Next() Cycle Report("Contraparte: " + Selection.Owner + "; Acordo: " + Selection. Link EndIf; EndProcedure

Vejamos o propósito e o uso do operador condicional GOSTAR(eng. GOSTAR) na linguagem de consulta 1C em exemplos.

Passagem rápida

Propósito

Verifique se o valor da string na solicitação corresponde ao padrão especificado - retorna um valor booleano (TRUE ou FALSE).

  • A verificação é independente de caso.
  • A consulta usa índices de tabela — não relacionados a índices de pesquisa de texto completo.
  • Pode levar muito tempo para ser concluído com tabelas grandes.
  • Strings de comprimento ilimitado devem ser convertidas usando a função SUBSTRING

Locais de uso

  • Nos termos do operador WHERE
  • Nas condições de projeto ESCOLHA QUANDO<>ENTÃO "" OUTRO "" FIM
  • Em campos de seleção (por exemplo: Name LIKE &ParameterSimilar to StringSuitable)

Descrição da sintaxe do operador LIKE

O parâmetro do operador deve ser uma string: pode ser especificado como uma constante ou passado como um parâmetro de solicitação.

Os literais (máscaras) listados abaixo podem ser usados ​​juntos ou separadamente.

Especificação exata da string

SELECIONE os 10 primeiros
Chaves.Nome
DE
Directory.Keys AS Chaves
ONDE
Keys.Name SIMILAR a "1" // Equivalente a Keys.Name ="1"

Resultado:

% é um literal que significa um número arbitrário de quaisquer caracteres

SELECIONE os 10 primeiros
Chaves.Nome
DE
Directory.Keys AS Chaves
ONDE
Chaves.Nome LIKE "%"

Resultado: quaisquer 10 itens

_ (sublinhado): correspondência literal com qualquer caractere

Exemplo 1:

SELECIONE os 10 primeiros
Chaves.Nome
DE
Directory.Keys AS Chaves
ONDE
Chaves.Nome LIKE "_"

Exemplo #2: começando com qualquer caractere, seguido por “1” e, em seguida, quaisquer caracteres

SELECIONE os 10 primeiros
Chaves.Nome
DE
Directory.Keys AS Chaves
ONDE
Keys.Name SEMELHANTE a "_1%"

Resultado:

(um ou mais caracteres entre colchetes)

  • Cada literal que corresponde a qualquer caractere é usado como um OR.
    É aceitável especificar um intervalo, por exemplo a-z,0-5, significando um caractere arbitrário do intervalo especificado

Exemplo

SELECIONE os 10 primeiros
Chaves.Nome
DE
Directory.Keys AS Chaves
ONDE
Keys.Name SEMELHANTE a "[l]%"

Resultado: 10 começando com "l" ou "z"

Exemplo: começando com 5,6,7

SELECIONE os 10 primeiros
Chaves.Nome
DE
Directory.Keys AS Chaves
ONDE
Chaves.Nome LIKE "%"

Resultado:

[^] (entre colchetes há um sinal de escape ^ seguido por um ou mais caracteres)

Equivalente a qualquer caractere (_), exceto os especificados ()

Exemplo

SELECIONE os 10 primeiros
Chaves.Nome
DE
Directory.Keys AS Chaves
ONDE
Keys.Name SIMILAR a "8.[^012]%"//não inclui 8.0,8.1,8.2

Resultado: todos começando com "8." excluindo os indicados

SPECIAL CHARACTER - comando para especificar os caracteres cadastrados acima na requisição

Como símbolo de serviço, é aceitável usar pelo menos: #,~,/,\

Exemplo:

SELECIONE os 10 primeiros
Chaves.Nome
DE
Directory.Keys AS Chaves
ONDE
Keys.Name LIKE "#_" CARÁTER ESPECIAL "#"

Resultado:

Aplicabilidade em plataformas

Parâmetros incorretos LIKE<>

  • Um parâmetro do tipo não string é passado: por exemplo, o número 1 em vez da string “1”
  • Um campo do tipo não string é comparado com uma máscara válida (por exemplo, um link) ou ao conectar, o valor não é verificado para IsNUL

Preste atenção no texto do erro onde a pergunta é exibida:

Chaves.Nome SIMILAR<>&L

Operador COMO permite comparar dados do tipo string em uma consulta localizada à esquerda do operador com dados do tipo string localizados à direita do operador. O resultado da comparação é avaliado como Verdadeiro ou Falso, portanto a comparação pode ser aplicada como uma condição.

Para o operador COMO Existem caracteres de serviço especiais que não são percebidos como uma string:

  • Símbolo de porcentagem "%": indica a presença de qualquer número de caracteres arbitrários em uma string
  • "[...]" um ou mais caracteres entre colchetes: indica a presença de qualquer (único) dos caracteres listados. Além disso, um intervalo de caracteres pode ser especificado (por exemplo)
  • “_” sublinhado: indica a presença de qualquer caractere arbitrário
  • Caractere de negação "[^...]": denota a presença de qualquer caractere único diferente daqueles especificados entre colchetes
Se você precisar especificar um dos caracteres especiais acima para comparação, deverá usar a palavra-chave "SÍMBOLO ESPECIAL"

Recursos de uso com vários SGBDs

IBM DB2"Apenas um parâmetro pode ser colocado à direita do operador SIMILAR. Os únicos caracteres curinga são "_" (sublinhado significando qualquer caractere) e "%" (porcentagem significando uma sequência de quaisquer caracteres).
No caso de usar um SGBD " PostgreSQL" ou " Banco de dados Oracle"caracteres especiais "colchetes [...]" são aceitos somente se estiverem especificados no texto da solicitação e NÃO são passados ​​como parâmetro para a solicitação.

Assim, no banco de dados de arquivos, os caracteres especiais serão sempre percebidos da mesma forma e de forma diferente dependendo do SGBD utilizado na versão cliente-servidor.

Exemplo: selecione produtos que contenham o símbolo "%" no nome

SELECIONE | Ref.Link |DE | Diretório. Nomenclatura COMO Ref | Ref.Nome LIKE "%\%" CARÁTER ESPECIAL "\"

Exemplo: selecione produtos cujos nomes comecem com a palavra “Tanque”

SELECIONE | Ref.Link |DE | Diretório. Nomenclatura COMO Ref | Nome de referência SEMELHANTE a "Bak%"

Exemplo: selecione produtos cujos nomes terminam com um número

SELECIONE | Ref.Link |DE | Diretório. Nomenclatura COMO Ref | Ref.Nome LIKE "%"

Às vezes surge uma situação quando em 1C 8.3 ou 8.2 você precisa fazer uma seleção, por exemplo, de um diretório de todos os elementos que possuem a palavra “esmalte” em seu nome. Ou, no diretório, selecione todos os empreiteiros cujos sobrenomes contenham a palavra “Ivan”. Em geral, verifique algum valor de string.

Para tanto, existe um operador nas consultas 1C 8.3 e 8.2 - “Similar”. É utilizado, respectivamente, nas seguintes condições:

Obtenha 267 videoaulas em 1C gratuitamente:

Como usar modelos em consultas 1C?

Para gerar uma condição de seleção, é necessário passar um determinado modelo como parâmetro. Para criar um modelo, existem os chamados símbolos de serviço.

Por exemplo, o caractere "%" permite qualquer sequência de caracteres arbitrários:

Existem outros caracteres especiais:

  • % (porcentagem) – permite qualquer sequência de caracteres arbitrários;
  • _ (sublinhado) - qualquer caractere único;
  • […] – um caractere arbitrário dentre os listados entre colchetes. Além de listar caracteres, você pode usar intervalos. Exemplo: a-o;
  • [^...] – igual ao anterior, mas ao contrário. O sinal "^" significa negação.