La richiesta 1c è simile a una maschera. Simile alle condizioni della query. Esempio: selezionare i prodotti i cui nomi iniziano con la parola "Tank"

COME- Operatore per verificare la somiglianza di una stringa con un modello. Analogo di LIKE in SQL.
Operatore COME consente di confrontare il valore dell'espressione specificata a sinistra con la stringa del modello specificata a destra. Il valore dell'espressione deve essere di tipo stringa. Se il valore dell'espressione corrisponde al modello, il risultato dell'operatore sarà TRUE, altrimenti FALSE.
I seguenti caratteri nella stringa del modello sono caratteri di servizio e hanno un significato diverso dal carattere della stringa:
. % (percentuale): una sequenza contenente un numero qualsiasi di caratteri arbitrari
. _ (trattino basso): un carattere arbitrario
. […] (uno o più caratteri tra parentesi quadre): qualsiasi singolo carattere elencato all'interno delle parentesi quadre
Un'enumerazione può contenere intervalli, ad esempio a-z, ovvero un carattere arbitrario incluso nell'intervallo, comprese le estremità dell'intervallo.
. [^...] (tra parentesi quadre un segno di negazione seguito da uno o più caratteri): qualsiasi singolo carattere diverso da quelli elencati dopo il segno di negazione
Qualsiasi altro simbolo significa se stesso e non comporta alcun carico aggiuntivo.
Se uno dei caratteri elencati deve essere scritto come se stesso, deve essere preceduto da<Спецсимвол>. Me stessa<Спецсимвол>(qualsiasi carattere adatto) è definito nella stessa istruzione dopo la parola chiave SPECIAL CHARACTER.
Per esempio, modello “%ABV[abvg]\_abv%” CARATTERE SPECIALE “\” indica una sottostringa costituita da una sequenza di caratteri:
lettere A; lettere B; lettere B; una cifra; una delle lettere a, b, c o d; sottolineare; lettere a; lettere b; lettere v.
Inoltre, questa sequenza può essere preceduta da un insieme arbitrario di caratteri.

Esempi di utilizzo:
Codice 1C v 8.x Procedura BankEndTextInput(Elemento, Testo, Valore, StandardProcessing)
Elaborazione standard = Falso;
//Crea una query con una ricerca utilizzando uno schema come "%" +<Текст введенный пользователм в поле ввода> + "%"
Richiesta = Nuova richiesta;
Query.SetParameter("Nome", "%" + Testo + "%");
Query.Text = "SELEZIONA
| Banche.Link
|DA
| Directory.Banche COME Banche
|DOVE
| Banche.Nome SIMILE &Nome";

Risultato = Query.Esegui();
Selezione = Risultato.Seleziona();
Se Result.Empty() Allora
//Non abbiamo trovato nulla. Qui puoi visualizzare un messaggio o fare qualcos'altro :)
Altrimenti
//Ottieni i risultati
tzResults = Risultato.Scarica();
//Prepara un elenco di valori che conterrà gli elementi trovati.
Valore = Nuova ListaValori();
Value.LoadValues(tzResults.UnloadColumn("Link"));
finisci se;
Fine della procedura

È necessario che gli “Accordi Predefiniti” includano solo i Nomi dell'Accordo Principale, ecc.:
Codice 1C v 8.x Scelta
Quando il nome è SIMILE a "Accordo n.%", allora "Accordo con numero" // È adatta qualsiasi riga che inizia con "Accordo n."
Quando il nome è SIMILE a "Accordo principale%[^А-яЁе"+Simbolo(33)+"-"+Simbolo(126)+"№"""+Simboli.PS+Simboli.Tab+Simboli.PF+Simboli .NPP+ Simboli.VTab+"]%" quindi "Contratti predefiniti" // Qualsiasi riga che inizia con "Contratto principale" è adatta
Altrimenti "Altro"
Termina come una specie di contratto

Informazioni prese dal sito

Operatore COME consente di confrontare i dati di tipo stringa in una query che si trova a sinistra dell'operatore con i dati di tipo stringa che si trovano a destra dell'operatore. Il risultato del confronto restituisce Vero o Falso, quindi il confronto può essere applicato come condizione.

Per l'operatore COME Esistono caratteri di servizio speciali che non vengono percepiti come una stringa:

  • Simbolo percentuale "%": indica la presenza di un numero qualsiasi di caratteri arbitrari in una stringa
  • "[...]" uno o più caratteri tra parentesi quadre: indica la presenza di uno qualsiasi (singolo) dei caratteri elencati. Inoltre, è possibile specificare un intervallo di caratteri (ad esempio)
  • "_" trattino basso: indica la presenza di qualsiasi carattere arbitrario
  • Carattere di negazione "[^...]": denota la presenza di qualsiasi singolo carattere diverso da quelli specificati tra parentesi quadre
Se è necessario specificare uno dei caratteri speciali sopra indicati per il confronto, è necessario utilizzare la parola chiave "SIMBOLO SPECIALE"

Caratteristiche di utilizzo con vari DBMS

IBMDB2"Solo un parametro può essere posizionato a destra dell'operatore SIMILAR. Gli unici caratteri jolly sono "_" (il carattere di sottolineatura indica qualsiasi carattere) e "%" (la percentuale indica una sequenza di qualsiasi carattere).
In caso di utilizzo di un DBMS " PostgreSQL" O " Base di dati Oracle I "caratteri speciali" parentesi quadre [...]" sono accettati solo se specificati nel testo della richiesta, e NON vengono passati come parametro alla richiesta.

Pertanto, nel database dei file, i caratteri speciali verranno percepiti sempre allo stesso modo e in modo diverso a seconda del DBMS utilizzato nella versione client-server.

Esempio: seleziona i prodotti che contengono il simbolo "%" nel nome

SELEZIONA | Rif.Link |DA | Nomenclatura COME Rif | Rif.Nome LIKE "%\%" CARATTERE SPECIALE "\"

Esempio: selezionare i prodotti i cui nomi iniziano con la parola "Tank"

SELEZIONA | Rif.Link |DA | Nomenclatura COME Rif | Rif.Nome SIMILE a "Bak%"

Esempio: seleziona prodotti i cui nomi terminano con un numero

SELEZIONA | Rif.Link |DA | Nomenclatura COME Rif | Rif.Nome SIMILE a "%"

L'operatore SIMILAR in una query controlla la somiglianza dei valori stringa delle tabelle con un modello.
Viene utilizzato nel modo seguente: la stringa da verificare viene posizionata a sinistra di questo operatore e il modello a destra.

Dopo il controllo, restituisce True o False di conseguenza, viene utilizzato attivamente nelle condizioni.
Per creare un modello vengono utilizzati i seguenti caratteri di servizio:

  • % (percentuale) - una sequenza contenente un numero qualsiasi di caratteri arbitrari
  • _ (trattino basso) - un carattere arbitrario
  • […] (uno o più caratteri tra parentesi quadre) - qualsiasi singolo carattere elencato all'interno delle parentesi quadre
    Inoltre, oltre a vari simboli, è possibile utilizzare intervalli, ad esempio a-z(A-z), che indica la presenza di un simbolo arbitrario incluso nell'intervallo, comprese le estremità dell'intervallo.
  • [^...] (tra parentesi quadre un segno di negazione seguito da uno o più caratteri) - qualsiasi singolo carattere diverso da quelli elencati dopo il segno di negazione

I restanti simboli vengono utilizzati per lo scopo previsto.
Se è necessario trasmettere come simbolo uno dei caratteri di servizio sopra indicati, allora deve essere preceduto da<Спецсимвол>. Me stessa<Спецсимвол>(qualsiasi carattere adatto) è definito nella stessa istruzione dopo la parola chiave SPECIAL CHARACTER.
Ad esempio, il modello “%ABV[abvg]\_abv%” CARATTERE SPECIALE “\” indica una sottostringa costituita da una sequenza di caratteri:
lettere A; lettere B; lettere B; una cifra; una delle lettere a, b, c o d; sottolineare; lettere a; lettere b; lettere v.
Inoltre, questa sequenza può essere preceduta da un insieme arbitrario di caratteri.

Procedura Seleziona AgreementContainingInNameText(mText)
//Nella richiesta utilizzeremo un modello come "%" + mText + "%" Request = New Request; Query.SetParameter("Nome", "%" + Testo + "%"); Request.Text = "SELECT | Accordi. Link, | Accordi. Proprietario | DA | Directory. Contratti delle controparti AS Accordi | | DOVE | Accordi. Nome SIMILE & Nome"; Risultato = Query.Esegui(); Selezione = Risultato.Seleziona(); Report("I contratti contenenti nel nome: " + mText + " hanno le seguenti Controparti"); While Selection.Next() Ciclo Report("Controparte: " + Selection.Owner + "; Accordo: " + Selection. Link EndIf; EndProcedure

A volte si verifica una situazione in cui in 1C 8.3 o 8.2 è necessario effettuare una selezione, ad esempio, da una directory di tutti gli elementi che hanno la parola "smalto" nel nome. Oppure, dall'elenco, seleziona tutti gli imprenditori i cui cognomi contengono la parola "Ivan". In generale, controlla alcuni valori di stringa.

A questo scopo, nelle query 1C 8.3 e 8.2 è presente un operatore - "Simile". Viene utilizzato, rispettivamente, nelle seguenti condizioni:

Ottieni 267 lezioni video su 1C gratuitamente:

Come utilizzare i modelli nelle query 1C?

Per generare una condizione di selezione, è necessario passare un determinato modello come parametro. Per creare un modello, ci sono i cosiddetti simboli di servizio.

Ad esempio, il carattere "%" consente qualsiasi sequenza di caratteri arbitrari:

Ci sono altri caratteri speciali:

  • % (percentuale) - consente qualsiasi sequenza di caratteri arbitrari;
  • _ (trattino basso) - qualsiasi singolo carattere;
  • […] – un carattere arbitrario tra quelli elencati tra parentesi. Oltre a elencare i caratteri, puoi utilizzare gli intervalli. Esempio: a-o;
  • [^...] – uguale al precedente, ma al contrario. Il segno "^" significa negazione.

Diamo un'occhiata allo scopo e all'uso dell'operatore condizionale MI PIACE (eng. MI PIACE) nel linguaggio di query 1C negli esempi.

Passaggio veloce

Scopo

Controlla se il valore della stringa nella richiesta corrisponde al modello specificato: restituisce un valore booleano (VERO o FALSO).

  • Il controllo è indipendente dal caso.
  • La query utilizza indici di tabella, non correlati agli indici di ricerca full-text.
  • Il completamento con tabelle di grandi dimensioni potrebbe richiedere molto tempo.
  • Le stringhe di lunghezza illimitata devono essere convertite utilizzando la funzione SUBSTRING

Luoghi d'uso

  • Nei termini dell'operatore WHERE
  • Nelle condizioni progettuali SCEGLI QUANDO<>POI "ALTRIMENTI" FINE
  • Nei campi di selezione (ad esempio: Nome LIKE &ParametroSimile a StringSuitable)

Descrizione della sintassi dell'operatore LIKE

Il parametro dell'operatore deve essere una stringa: può essere specificato come costante o passato come parametro di richiesta.

I valori letterali (maschere) elencati di seguito possono essere utilizzati insieme o separatamente.

Specifica esatta della stringa

SELEZIONA i primi 10
Chiavi.Nome
DA
Directory.Keys Chiavi AS
DOVE
Keys.Name SIMILE a "1" // Equivalente a Keys.Name ="1"

Risultato:

% è un valore letterale che significa un numero arbitrario di qualsiasi carattere

SELEZIONA i primi 10
Chiavi.Nome
DA
Directory.Keys Chiavi AS
DOVE
Chiavi.Nome COME "%"

Risultato: 10 elementi qualsiasi

_ (trattino basso): corrispondenza letterale di qualsiasi carattere

Esempio 1:

SELEZIONA i primi 10
Chiavi.Nome
DA
Directory.Keys Chiavi AS
DOVE
Chiavi.Nome COME "_"

Esempio n.2: iniziando con qualsiasi carattere, seguito da "1" e quindi da qualsiasi carattere

SELEZIONA i primi 10
Chiavi.Nome
DA
Directory.Keys Chiavi AS
DOVE
Keys.Name SIMILE a "_1%"

Risultato:

(uno o più caratteri tra parentesi quadre)

  • Ogni letterale che corrisponde a un qualsiasi carattere viene utilizzato come OR.
    È accettabile specificare un intervallo, ad esempio a-z,0-5, ovvero un carattere arbitrario dall'intervallo specificato

Esempio

SELEZIONA i primi 10
Chiavi.Nome
DA
Directory.Keys Chiavi AS
DOVE
Chiavi.Nome SIMILE a "[l]%"

Risultato: 10 che iniziano con "l" o "z"

Esempio: a partire da 5,6,7

SELEZIONA i primi 10
Chiavi.Nome
DA
Directory.Keys Chiavi AS
DOVE
Chiavi.Nome COME "%"

Risultato:

[^] (tra parentesi quadre c'è il segno ^ seguito da uno o più caratteri)

Equivalente a qualsiasi carattere (_) tranne quelli specificati ()

Esempio

SELEZIONA i primi 10
Chiavi.Nome
DA
Directory.Keys Chiavi AS
DOVE
Keys.Name SIMILE a "8.[^012]%"//non include 8.0,8.1,8.2

Risultato: tutti iniziano con "8". esclusi quelli indicati

CARATTERE SPECIALE - comando per specificare i caratteri registrati sopra nella richiesta

Come simbolo di servizio è accettabile utilizzare almeno: #,~,/,\

Esempio:

SELEZIONA i primi 10
Chiavi.Nome
DA
Directory.Keys Chiavi AS
DOVE
Tasti.Nome COME "#_" CARATTERE SPECIALE "#"

Risultato:

Applicabilità nelle piattaforme

Parametri errati MI PIACE<>

  • Viene passato un parametro di tipo non stringa: ad esempio il numero 1 al posto della stringa “1”
  • Un campo di tipo non stringa viene confrontato con una maschera valida (ad esempio un collegamento) oppure durante la connessione il valore non viene controllato per IsNUL

Presta attenzione al testo dell'errore in cui viene visualizzata la domanda:

Chiavi.Nome SIMILI<>&L