Lietošana ir līdzīga pieprasījumam 1s 8.2. Līdzīgi vaicājuma nosacījumiem

Neskatoties uz visiem trūkumiem, teksta lauka meklēšana joprojām ir viena no populārākajām. Virkņu datu tipus varam atrast visur – šādā formātā var saglabāt vārdus, kontu numurus, adreses, kā arī citu informāciju. Vaicājumos iebūvētajā 1C valodā izstrādātāju ērtībām tiek izmantots īpašs operators “LIKE”. Šī ir viena no visbiežāk izmantotajām komandām, tāpēc bez pamatīgām zināšanām par tās sintaksi un iespējām programmētājam būs grūti strādāt.

Izmantojot operatoru LIKE

Pirms izmantot jebkuru operatoru praksē, jums ir skaidri jāsaprot tā mērķis, pielietojuma vietas un sintakse. “LIKE” izmantošanas mērķis 1C pieprasījumā ir pārbaudīt, vai nosacījums ir izpildīts kā veidne. Atgriešanas vērtība ir Būla tips — patiess vai nepatiess —, kas norāda, vai norādītais nosacījums ir patiess. Operatoru LIKE var izmantot vairākās vaicājuma vietās:

  • Nosacījumu blokā, kas apzīmēts ar atslēgvārdu “KUR”;
  • Izvēles Kad tad citādi beigas dizainā;
  • Tieši atlases laukos, lauku salīdzināšanas rezultātā.

Verifikācijas sintakse vienmēr ir vienāda un sastāv no 3 saitēm. Kreisajā pusē ir pārbaudāmā teksta vērtība, pēc tam pats operators “LIKE”, bet labajā pusē ir pārbaudāmā veidne. Lai ātri un viegli izveidotu veidnes, ir īpaši simboli, kas atvieglo izstrādi:

  1. “%” ir jebkura patvaļīga garuma rakstzīmju secība. Izmanto, lai virknē meklētu atsevišķus vārdus vai ciparus;
  2. “_” — jebkura atsevišķa rakstzīme. Paredzēts, lai norādītu uz vienas rakstzīmes klātbūtni;
  3. “[...]” ir rakstzīmju secība, kas jāsalīdzina ar rakstzīmi virknē. Ar šāda modeļa palīdzību tiek pārbaudīta atbilstība jebkurai iekavās norādītajai rakstzīmei. Varat arī norādīt ciparu vai burtu diapazonu ([a-g], );
  4. “[^...]” ir pretējs modelis iepriekšējam. Tiek pārbaudīta atšķirība starp rindā norādītajām rakstzīmēm un iekavās norādītajām rakstzīmēm.

Lai labāk izprastu un izprastu pareizu veidņu veidošanas principus, apskatīsim dažus piemērus, ar kuriem bieži nākas saskarties izstrādātāju dzīvē. Pirmais ir tad, kad mums no nomenklatūras direktorija jāatlasa visi vienumi, kuru nosaukumos parādās vārds “CUTTER”. Šajā gadījumā mums ir jāizmanto LIKE vaicājuma nosacījumos:

SELECT Nomenclature.Name AS Nosaukums FROM Directory.Nomenclature AS Nomenclature WHERE Nomenclature.Name LĪDZĪGI "% CUTTER%"

Ja mēs noņemsim abus “%” simbolus, vaicājumā tiks parādīts produkts, kura nosaukums pilnībā atbilst pēdiņās norādītajam. Ja atstājam veidni “CUTTER%” vai “% CUTTER”, tad rezultāts būs to vienumu saraksts, kas attiecīgi beidzas vai sākas ar noteiktu rakstzīmju kombināciju.


Apskatīsim problēmu, kas var mulsināt iesācēju programmētājus, kuri nezina vaicājuma sintaksi. Pieņemsim, ka jums ir jāatrod visi vienumi, kuru nosaukumos ir simbols “%”. Īpaši gadījumos, kad jāmeklē rezervētās rakstzīmes, ir operators “speciālā rakstzīme”. #,\,/,~ un citas rakstzīmes var izmantot kā speciālo rakstzīmi, pēc kuras visas rezervētās rakstzīmes vienkārši apzīmēs zīmi.

SELECT Nomenklatūra.Nosaukums AS Nosaukums FROM Direktorija.Nomenklatūra AS Nomenklatūra WHERE Nomenklatūra.Nosaukums LĪDZĪGI "%#%" SPECIAL CHARACTER "#"

Ja meklēšanā ir jāizmanto parametrs, tad vaicājuma mainīgais ar parametru LĪDZĪGS tiek izmantots, izmantojot pievienošanu. Atcerieties, ka parametram ir jābūt virknes tipam, pretējā gadījumā tas būs jāpārvērš par virkni pieprasījumā. Šī ir diezgan sarežģīta operācija, un labāk to iepriekš izslēgt.

SELECT Nomenclature.Name AS Nosaukums FROM Directory.Nomenclature AS Nomenclature WHERE Nomenclature.Name LĪDZĪGI "%" + &name + "%"

Funkcija LĪDZĪGA ir piemērojama visās platformas versijās, sākot no 8, un tās pielietojamības dēļ 1C izstrādātāji to nevēlēsies mainīt. Protams, teksta meklēšana vienmēr ir atkarīga no ievadītā vārda precizitātes, taču tā joprojām ir viena no visizplatītākajām. Šajā sakarā profesionāliem 1C izstrādātājiem ir jāizpēta LĪDZĪGA izmantošana ar visām tā niansēm.

LĪDZĪGS operators vaicājumā pārbauda virkņu vērtības no tabulām, vai tās ir līdzības ar modeli.
To lieto šādi: pārbaudāmā virkne tiek novietota pa kreisi no šī operatora, bet raksts ir novietots pa labi.

Pēc pārbaudes tas atgriež True vai False; attiecīgi tas tiek aktīvi izmantots apstākļos.
Veidnes izveidošanai tiek izmantotas šādas pakalpojumu rakstzīmes:

  • % (procenti) - secība, kas satur jebkuru skaitu patvaļīgu rakstzīmju
  • _ (pasvītrojums) - viena patvaļīga rakstzīme
  • […] (viena vai vairākas rakstzīmes kvadrātiekavās) — jebkura atsevišķa rakstzīme, kas norādīta kvadrātiekavās
    Papildus dažādiem simboliem varat izmantot arī diapazonus, piemēram, a-z(A-z), kas nozīmē, ka diapazonā ir iekļauts patvaļīgs simbols, ieskaitot diapazona galus.
  • [^...] (kvadrātiekavās nolieguma zīme, kam seko viena vai vairākas rakstzīmes) — jebkura atsevišķa rakstzīme, kas nav norādīta aiz nolieguma zīmes

Pārējie simboli tiek izmantoti paredzētajam mērķim.
Ja ir nepieciešams pārsūtīt kādu no iepriekš minētajām pakalpojuma rakstzīmēm kā simbolu, tad pirms tā ir jānorāda<Спецсимвол>. Es pats<Спецсимвол>(jebkura piemērota rakstzīme) ir definēts tajā pašā paziņojumā pēc atslēgvārda SPECIAL CHARACTER.
Piemēram, raksts “%ABV[abvg]\_abv%” ĪPAŠĀ RAKSTUVE “\” nozīmē apakšvirkni, kas sastāv no rakstzīmju secības:
burti A; burti B; burti B; viens cipars; viens no burtiem a, b, c vai d; pasvītrojums; burti a; burti b; burti v.
Turklāt pirms šīs secības var būt patvaļīga rakstzīmju kopa.

Procedūras atlases līgums, kas satur nosaukumuText(mText)
//Pieprasījumā izmantosim tādu veidni kā "%" + mText + "%" Pieprasījums = Jauns pieprasījums; Query.SetParameter("Nosaukums", "%" + Teksts + "%"); Request.Text = "SELECT | Līgumi. Saite, | Līgumi. Īpašnieks | NO | Katalogs. Darījumu partneru līgumi AS Līgumi | | KUR | Līgumi. Vārds LĪDZĪGI & Vārds"; Rezultāts = Query.Run(); Atlase = Result.Select(); Report("Līgumiem, kuru nosaukumā ir: " + mText + ", ir šādi darījuma partneri"); Kaut atlase.Nākamais() Cikla pārskats("Darījuma partneris: " + Atlase.Īpašnieks + "; Līgums: " + Atlase. Saite EndIf; EndProcedure

Apskatīsim nosacītā operatora mērķi un lietojumu PATĪK (ang. LIKE) 1C vaicājumu valodā piemēros.

Ātra pāreja

Mērķis

Pārbaudiet, vai virknes vērtība pieprasījumā atbilst norādītajam modelim — atgriež Būla vērtību (TRUE vai FALSE).

  • Čeks ir no gadījuma neatkarīgs.
  • Vaicājumā tiek izmantoti tabulu indeksi, kas nav saistīti ar pilna teksta meklēšanas indeksiem.
  • Tas var aizņemt ilgu laiku, lai pabeigtu ar lieliem galdiem.
  • Neierobežota garuma virknes ir jāpārveido, izmantojot funkciju SUBSTRING

Lietošanas vietas

  • Pēc operatora WHERE noteikumiem
  • Projektēšanas nosacījumos IZVĒLE KAD<>TAD BEIGAS "" CITS ""
  • Atlases laukos (piemēram: nosaukums LIKE ¶metrs, kas līdzīgs StringSuitable)

Operatora LIKE sintakses apraksts

Operatora parametram ir jābūt virknei: to var norādīt kā konstanti vai nodot kā pieprasījuma parametru.

Tālāk uzskaitītos literāļus (maskas) var lietot kopā vai atsevišķi.

Precīza virknes specifikācija

IZVĒLIES pirmos 10
Atslēgas.Vārds
NO
Directory.Keys AS Atslēgas
KUR
Keys.Name LĪDZĪGI "1" // Atbilst Keys.Name ="1"

Rezultāts:

% ir burtisks burts, kas nozīmē patvaļīgu jebkuru rakstzīmju skaitu

IZVĒLIES pirmos 10
Atslēgas.Vārds
NO
Directory.Keys AS Atslēgas
KUR
Keys.Name LIKE "%"

Rezultāts: jebkuras 10 preces

_ (pasvītrojums): burtiski atbilst jebkurai rakstzīmei

1. piemērs:

IZVĒLIES pirmos 10
Atslēgas.Vārds
NO
Directory.Keys AS Atslēgas
KUR
Keys.Name LIKE "_"

2. piemērs: sākot ar jebkuru rakstzīmi, kam seko “1” un pēc tam jebkuras rakstzīmes

IZVĒLIES pirmos 10
Atslēgas.Vārds
NO
Directory.Keys AS Atslēgas
KUR
Keys.Nosaukums LĪDZĪGI "_1%"

Rezultāts:

(viena vai vairākas rakstzīmes kvadrātiekavās)

  • Katrs burts, kas atbilst kādai rakstzīmei, tiek izmantots kā VAI.
    Ir pieļaujams norādīt diapazonu, piemēram, a-z,0-5, kas nozīmē patvaļīgu rakstzīmi no norādītā diapazona

Piemērs

IZVĒLIES pirmos 10
Atslēgas.Vārds
NO
Directory.Keys AS Atslēgas
KUR
Keys.Nosaukums LĪDZĪGI "[l]%"

Rezultāts: 10, kas sākas ar "l" vai "z"

Piemērs: sākot ar 5,6,7

IZVĒLIES pirmos 10
Atslēgas.Vārds
NO
Directory.Keys AS Atslēgas
KUR
Keys.Name LIKE "%"

Rezultāts:

[^] (kvadrātiekavās ir atsoļa zīme ^, kam seko viena vai vairākas rakstzīmes)

Atbilst jebkurai rakstzīmei (_), izņemot norādītās ()

Piemērs

IZVĒLIES pirmos 10
Atslēgas.Vārds
NO
Directory.Keys AS Atslēgas
KUR
Keys.Nosaukums LĪDZĪGS "8.[^012]%"//neietver 8.0,8.1,8.2

Rezultāts: viss sākas ar "8." izņemot norādītos

SPECIAL CHARACTER - komanda, lai norādītu iepriekš pieprasījumā reģistrētās rakstzīmes

Kā pakalpojuma simbolu ir pieņemams izmantot vismaz: #,~,/,\

Piemērs:

IZVĒLIES pirmos 10
Atslēgas.Vārds
NO
Directory.Keys AS Atslēgas
KUR
Taustiņi. Nosaukums LIKE "#_" ĪPAŠĀ RAKSTUVE "#"

Rezultāts:

Pielietojamība platformās

Nepareizi parametri LIKE<>

  • Tiek nodots nevirknes tipa parametrs: piemēram, skaitlis 1, nevis virkne “1”
  • Lauks, kas nav virkne, tiek salīdzināts ar derīgu masku (piemēram, saiti) vai savienojuma laikā netiek pārbaudīta vērtība IsNUL.

Pievērsiet uzmanību kļūdas tekstam, kurā tiek parādīts jautājums:

Taustiņi.Vārds LĪDZĪGS<>&L

Operators PATĪKļauj salīdzināt virknes tipa datus vaicājumā, kas atrodas operatora kreisajā pusē, ar virknes tipa datiem, kas atrodas operatora labajā pusē. Salīdzinājuma rezultāts tiek novērtēts kā Patiess vai Nepatiess, tāpēc salīdzinājumu var izmantot kā nosacījumu.

Operatoram PATĪK Ir īpašas pakalpojumu rakstzīmes, kas netiek uztvertas kā virkne:

  • Procentu simbols "%": norāda uz jebkura skaita patvaļīgu rakstzīmju klātbūtni virknē
  • "[...]" viena vai vairākas rakstzīmes kvadrātiekavās: norāda uz jebkuras (atsevišķas) no uzskaitītajām rakstzīmēm. Var norādīt arī rakstzīmju diapazonu (piemēram)
  • "_" pasvītrojums: norāda jebkuras patvaļīgas rakstzīmes klātbūtni
  • "[^...]" nolieguma rakstzīme: apzīmē jebkuras atsevišķas rakstzīmes klātbūtni, izņemot tās, kas norādītas kvadrātiekavās
Ja salīdzināšanai ir jānorāda kāda no iepriekš minētajām īpašajām rakstzīmēm, jāizmanto atslēgvārds "ĪPAŠAIS SIMBOLS"

Lietošanas iespējas ar dažādām DBVS

IBM DB2"Tikai parametru var novietot pa labi no LĪDZĪGA operatora. Vienīgās aizstājējzīmes ir "_" (pasvītrojums nozīmē jebkuru rakstzīmi) un "%" (procentos, kas nozīmē jebkuru rakstzīmju secību).
Ja tiek izmantota DBVS " PostgreSQL"vai" Oracle datu bāze"Speciālās rakstzīmes "kvadrātiekavas [...]" tiek pieņemtas tikai tad, ja tās ir norādītas pieprasījuma tekstā, un NAV nodotas pieprasījumam kā parametrs.

Tādējādi failu datu bāzē speciālās rakstzīmes vienmēr tiks uztvertas vienādi un atšķirīgi atkarībā no klienta-servera versijā izmantotās DBVS.

Piemērs: atlasiet produktus, kuru nosaukumā ir simbols "%".

IZVĒLĒTIES | Ref.Link |NO | Katalogs Nomenklatūra KĀ Ref | KUR | Atsauces nosaukums LIKE "%\%" ĪPAŠS RAKSTURS "\"

Piemērs: atlasiet produktus, kuru nosaukumi sākas ar vārdu "Tvertne"

IZVĒLĒTIES | Ref.Link |NO | Katalogs Nomenklatūra KĀ Ref | KUR | Atsauces nosaukums LĪDZĪGI "Bak%"

Piemērs: atlasiet produktus, kuru nosaukumi beidzas ar ciparu

IZVĒLĒTIES | Ref.Link |NO | Katalogs Nomenklatūra KĀ Ref | KUR | Atsauces nosaukums LĪDZĪGS "%"

Dažreiz rodas situācija, kad 1C 8.3 vai 8.2 jums ir jāveic atlase, piemēram, no visu elementu direktorijas, kuru nosaukumā ir vārds “glazūra”. Vai arī no direktorija atlasiet visus darbuzņēmējus, kuru uzvārdos ir vārds “Ivans”. Kopumā pārbaudiet kādu virknes vērtību.

Šim nolūkam 1C vaicājumos 8.3 un 8.2 ir operators - “Līdzīgs”. To lieto attiecīgi šādos apstākļos:

Saņemiet 267 video nodarbības 1C bez maksas:

Kā izmantot veidnes 1C vaicājumos?

Lai izveidotu atlases nosacījumu, jums ir jānodod noteikta veidne kā parametrs. Lai izveidotu veidni, ir tā sauktie pakalpojumu simboli.

Piemēram, rakstzīme "%" pieļauj jebkuru patvaļīgu rakstzīmju secību:

Ir arī citas īpašās rakstzīmes:

  • % (procenti) - pieļauj jebkuru patvaļīgu rakstzīmju secību;
  • _ (pasvītrojums) - jebkura atsevišķa rakstzīme;
  • […] – viena patvaļīga rakstzīme no tām, kas norādītas iekavās. Papildus rakstzīmju uzskaitīšanai varat izmantot diapazonus. Piemērs: a-o;
  • [^...] – tas pats, kas iepriekšējais, bet otrādi. Zīme "^" nozīmē noliegumu.