Használata hasonló az 1s 8.2-hez. Hasonló a lekérdezési feltételekhez

Minden hiányosság ellenére a szövegmezős keresés még mindig az egyik legnépszerűbb. String adattípusokat mindenhol találunk - nevek, számlaszámok, címek, valamint egyéb információk tárolhatók ebben a formátumban. A beépített 1C nyelvű lekérdezésekben a fejlesztők kényelme érdekében egy speciális „LIKE” operátort használnak. Ez az egyik leggyakrabban használt parancs, így szintaxisának és képességeinek alapos ismerete nélkül nehéz lesz a programozónak dolgoznia.

A LIKE operátor használatával

Mielőtt bármilyen operátort a gyakorlatban használna, világosan meg kell értenie annak célját, alkalmazási helyeit és szintaxisát. A „LIKE” 1C kérésben való használatának célja a sablonként bemutatott feltétel kielégítésének ellenőrzése. A visszatérési érték logikai típusú – igaz vagy hamis –, amely jelzi, hogy a megadott feltétel igaz-e. A LIKE operátor több helyen is használható egy lekérdezésben:

  • A „HOL” kulcsszóval jelölt feltételek blokkban;
  • A Choice When Then Other End tervezésében;
  • Közvetlenül a kiválasztási mezőkben, a mező összehasonlítás eredményeként.

Az ellenőrző szintaxis mindig ugyanaz, és 3 hivatkozásból áll. A bal oldalon az ellenőrzött szövegérték, majd maga a „LIKE” operátor, a jobb oldalon pedig az ellenőrzött sablon látható. A sablonok gyors és egyszerű létrehozásához speciális szimbólumok vannak, amelyek megkönnyítik a fejlesztést:

  1. A „%” tetszőleges hosszúságú karakterek sorozata. Egyedi szavak vagy számok keresésére szolgál egy karakterláncban;
  2. „_” – tetszőleges karakter. Egyetlen karakter jelenlétének jelzésére szolgál;
  3. A „[...]” egy karaktersorozat, amelyet össze lehet hasonlítani egy karakterláncban található karakterrel. Egy ilyen minta segítségével a zárójelben szereplő karakterek egyezését ellenőrizzük. Megadhat egy szám- vagy betűtartományt is ([a-g], );
  4. A „[^...]” az előzővel ellentétes minta. A sorban megadott karakterek és a zárójelben szereplő karakterek közötti különbség ellenőrzésre kerül.

A helyes sablonok létrehozásának alapelvei jobb megértése és megértése érdekében nézzünk meg néhány példát, amelyekkel gyakran találkozhatunk a fejlesztők életében. Az első, amikor ki kell választanunk a nómenklatúra könyvtárából az összes olyan elemet, amelyek nevében a „CUTTER” szó szerepel. Ebben az esetben a LIKE-ot kell használnunk a lekérdezési feltételekben:

SELECT Nomenclature.Name AS Név FROM Directory.Nomenclature AS Nomenclature WHERE Nomenclature.Name HASONLÓ ehhez: "% CUTTER%"

Ha mindkét „%” szimbólumot eltávolítjuk, akkor a lekérdezésben olyan termék jelenik meg, amelynek neve teljesen megegyezik az idézőjelben megadottal. Ha meghagyjuk a „CUTTER%” vagy „% CUTTER” sablont, akkor az eredmény egy listát kap az adott karakterkombinációval végződő, illetve kezdődő elemekről.


Nézzünk meg egy problémát, amely megzavarhatja a kezdő programozókat, akik nem ismerik a lekérdezés szintaxisát. Tegyük fel, hogy meg kell találnia az összes olyan elemet, amelyek nevében szerepel a „%” szimbólum. Különösen olyan esetekben, amikor lefoglalt karaktereket kell keresnie, van egy „speciális karakter” operátor. A #,\,/,~ és más karakterek speciális karakterként használhatók, ami után a fenntartott karakterek egyszerűen jelet jelölnek.

SELECT Nomenclature.Name AS Név FROM Directory.Nomenclature AS Nomenclature WHERE Nomenclature.Name HASONLÓ ehhez: "%#%" SPECIAL CHARACTER "#"

Ha a keresésben paramétert kell használni, akkor a lekérdezésben a HASONLÓ paraméterrel rendelkező változót a rendszer az összeadás használatával használja. Ne feledje, hogy a paraméternek karakterlánc típusúnak kell lennie, különben a kérésben karakterláncra kell konvertálnia. Ez egy meglehetősen bonyolult művelet, és jobb, ha előre kizárja.

SELECT Nomenclature.Name AS Név FROM Directory.Nomenclature AS Nomenclature WHERE Nomenclature.Name HASONLÓ ehhez: "%" + &name + "%"

A HASONLÓ funkció a platform minden verziójában alkalmazható, 8-tól kezdve, és alkalmazhatósága miatt az 1C fejlesztői nem akarnak változtatni rajta. Természetesen a szöveges keresés mindig a beírt név pontosságától függ, de továbbra is az egyik leggyakoribb. Ebben a tekintetben a professzionális 1C fejlesztőknek tanulmányozniuk kell a HASONLÓ használatát annak minden árnyalatával együtt.

A HASONLÓ operátor a lekérdezésben ellenőrzi a táblázatokból származó karakterlánc-értékeket, hogy hasonlóak-e egy mintához.
Használata a következő: az ellenőrizendő karakterlánc ettől az operátortól balra, a minta pedig jobbra kerül.

Ellenőrzés után igaz vagy hamis értéket ad vissza, ennek megfelelően aktívan használják az adott körülmények között.
A sablon létrehozásához a következő szolgáltatáskaraktereket kell használni:

  • % (százalék) - tetszőleges számú karaktert tartalmazó sorozat
  • _ (aláhúzás) - egy tetszőleges karakter
  • […] (egy vagy több karakter szögletes zárójelben) – bármely, a szögletes zárójelben szereplő karakter
    Ezenkívül a különféle szimbólumok mellett tartományokat is használhat, például a-z(A-z), ami egy tetszőleges szimbólum jelenlétét jelenti a tartományban, beleértve a tartomány végeit is.
  • [^...] (szögletes zárójelben egy tagadójel, amelyet egy vagy több karakter követ) - a tagadójel után felsoroltaktól eltérő bármely karakter

A többi szimbólumot a rendeltetésüknek megfelelően használják.
Ha a fenti szolgáltatáskarakterek valamelyikét szimbólumként kell továbbítani, akkor azt meg kell előzni<Спецсимвол>. Magamat<Спецсимвол>(bármely megfelelő karakter) ugyanabban az utasításban van definiálva a SPECIAL CHARACTER kulcsszó után.
Például a „%ABV[abvg]\_abv%” SPECIÁLIS KARAKTER „\” minta egy karaktersorozatból álló részstringet jelent:
A betűk; B betűk; B betűk; egy számjegy; az a, b, c vagy d betűk egyike; aláhúzás; a betűk; b betűk; betűk v.
Ezenkívül ezt a sorozatot tetszőleges karakterkészlet előzheti meg.

Eljárás Válassza ki a Megállapodást, amely tartalmazza a névszöveget(mText)
//A kérésben olyan sablont fogunk használni, mint "%" + mText + "%" Request = New Request; Query.SetParameter("Név", "%" + Szöveg + "%"); Request.Text = "SELECT | Szerződések. Link, | Szerződések. Tulajdonos | FROM | Címtár. Partnerek szerződései AS Szerződések | | WHERE | Szerződések. Név HASONLÓ & Név"; Eredmény = Query.Run(); Selection = Eredmény.Select(); Report("Azok a megállapodások, amelyek a következő nevet tartalmazzák: " + mText + ", a következő szerződő felekkel rendelkeznek"); While Selection.Next() Cycle Report("Szerződés fél: " + Kiválasztás.Tulajdonos + "; Megállapodás: " + Kiválasztás. Link EndIf; EndProcedure

Nézzük meg a feltételes operátor célját és használatát LIKE (eng. LIKE) az 1C lekérdező nyelven a példákban.

Gyors átjárás

Célja

Ellenőrizze, hogy a kérésben szereplő karakterlánc értéke egyezik-e a megadott mintával – logikai értéket ad vissza (TRUE vagy FALSE).

  • A csekk esetfüggetlen.
  • A lekérdezés táblaindexeket használ, amelyek nem kapcsolódnak a teljes szöveges keresési indexekhez.
  • A nagy asztalok elkészítése sokáig tarthat.
  • A korlátlan hosszúságú karakterláncokat a SUBSTRING függvény segítségével kell konvertálni

Felhasználási helyek

  • A WHERE üzemeltető feltételei szerint
  • A tervezési feltételeknél VÁLASZTÁS MIKOR<>MAJD "" EGYÉB "" VÉGE
  • A kiválasztási mezőkben (például: Name LIKE &ParameterHasonló a StringSuitable-hoz)

A LIKE operátor szintaxisának leírása

Az operátori paraméternek karakterláncnak kell lennie: megadható konstansként, vagy átadható kérési paraméterként.

Az alább felsorolt ​​literálok (maszkok) együtt vagy külön-külön is használhatók.

Pontos karakterlánc specifikáció

KIVÁLASZTJA az első 10-et
Kulcsok.Név
TÓL TŐL
Directory.Keys AS Keys
AHOL
Keys.Name HASONLÓ "1"-hez // Egyenértékű a Keys.Name ="1"-hez

Eredmény:

A % egy szó szerinti, tetszőleges számú karaktert jelent

KIVÁLASZTJA az első 10-et
Kulcsok.Név
TÓL TŐL
Directory.Keys AS Keys
AHOL
Keys.Name LIKE "%"

Eredmény: bármely 10 elem

_ (aláhúzás): bármely karakternek megfelelő szó

1. példa:

KIVÁLASZTJA az első 10-et
Kulcsok.Név
TÓL TŐL
Directory.Keys AS Keys
AHOL
Keys.Name LIKE "_"

2. példa: bármely karakterrel kezdve, majd az „1”-el, majd bármilyen karakterrel

KIVÁLASZTJA az első 10-et
Kulcsok.Név
TÓL TŐL
Directory.Keys AS Keys
AHOL
Keys.Neve HASONLÓ ehhez: "_1%"

Eredmény:

(egy vagy több karakter szögletes zárójelben)

  • Minden literál, amely egy karakternek megfelel, VAGY-ként kerül felhasználásra.
    Elfogadható egy tartomány megadása, például a-z,0-5, ami egy tetszőleges karaktert jelent a megadott tartományból

Példa

KIVÁLASZTJA az első 10-et
Kulcsok.Név
TÓL TŐL
Directory.Keys AS Keys
AHOL
Keys.Neve HASONLÓ ehhez: "[l]%"

Eredmény: 10 „l” vagy „z” betűvel kezdődő

Példa: 5,6,7-tel kezdve

KIVÁLASZTJA az első 10-et
Kulcsok.Név
TÓL TŐL
Directory.Keys AS Keys
AHOL
Keys.Name LIKE "%"

Eredmény:

[^] (szögletes zárójelben van egy kilépési jel ^, amelyet egy vagy több karakter követ)

Egyenértékű bármely karakterrel (_), kivéve a megadottakat ()

Példa

KIVÁLASZTJA az első 10-et
Kulcsok.Név
TÓL TŐL
Directory.Keys AS Keys
AHOL
Keys.Name HASONLÓ ehhez: "8.[^012]%"//nem tartalmazza a 8.0,8.1,8.2

Eredmény: minden "8"-al kezdődik. a megjelöltek kivételével

SPECIAL CHARACTER - parancs a kérésben fent regisztrált karakterek megadására

Szervizszimbólumként elfogadható legalább a #,~,/,\

Példa:

KIVÁLASZTJA az első 10-et
Kulcsok.Név
TÓL TŐL
Directory.Keys AS Keys
AHOL
Keys.Name LIKE "#_" KÜLÖNLEGES KARAKTER "#"

Eredmény:

Alkalmazhatóság platformokon

Helytelen paraméterek LIKE<>

  • Nem karakterlánc típusú paraméter kerül átadásra: például az 1-es szám az „1” karakterlánc helyett.
  • A nem karakterlánc típusú mezőt a rendszer egy érvényes maszkkal (például egy hivatkozással) hasonlítja össze, vagy csatlakozáskor az értéket nem ellenőrzi az IsNUL

Ügyeljen a hiba szövegére, ahol a kérdés megjelenik:

Keys.Name HASONLÓ<>&L

Operátor MINT lehetővé teszi az operátortól balra található lekérdezésben szereplő karakterlánc típusú adatok összehasonlítását az operátortól jobbra található karakterlánc típusú adatokkal. Az összehasonlítás eredménye igazra vagy hamisra értékelődik, így az összehasonlítás feltételként alkalmazható.

Az üzemeltetőnek MINT Vannak speciális szolgáltatáskarakterek, amelyeket a rendszer nem karakterláncként érzékel:

  • "%" százalékszimbólum: azt jelzi, hogy tetszőleges számú karakter van egy karakterláncban
  • "[...]" egy vagy több karakter szögletes zárójelben: a felsorolt ​​karakterek bármelyikének (egyetlen) jelenlétét jelzi. Ezenkívül megadható egy karaktertartomány (például)
  • "_" aláhúzás: bármely tetszőleges karakter jelenlétét jelzi
  • "[^...]" tagadó karakter: bármely, a szögletes zárójelben megadott karaktertől eltérő karakter jelenlétét jelzi
Ha összehasonlítás céljából meg kell adnia a fenti speciális karakterek valamelyikét, akkor használja a "KÜLÖNLEGES SZIMBÓLUM" kulcsszót.

Különféle DBMS-ekkel való használat jellemzői

IBM DB2"Csak egy paraméter helyezhető el a HASONLÓ operátortól jobbra. Az egyetlen helyettesítő karakter a "_" (aláhúzás, amely bármely karaktert jelent) és a "%" (százalék, amely bármely karakter sorozatát jelenti).
DBMS használata esetén " PostgreSQL"vagy" Oracle adatbázis"a speciális karakterek "szögletes zárójelek [...]" csak akkor fogadhatók el, ha a kérés szövegében meg vannak adva, és NEM adják át paraméterként a kérésnek.

Így a fájladatbázisban a speciális karakterek mindig ugyanúgy és a kliens-szerver verzióban használt DBMS-től függően eltérően lesznek érzékelve.

Példa: válasszon olyan termékeket, amelyek nevében a „%” szimbólum szerepel

KIVÁLASZT | Ref.Link |FROM | Címtár Nómenklatúra HOGYAN Ref |HOL | Ref.Name LIKE "%\%" KÜLÖNLEGES KARAKTER "\"

Példa: válasszon olyan termékeket, amelyek neve a „tartály” szóval kezdődik

KIVÁLASZT | Ref.Link |FROM | Címtár Nómenklatúra HOGYAN Ref |HOL | Ref.Name HASONLÓ a "Bak%"-hoz

Példa: válasszon olyan termékeket, amelyek neve számmal végződik

KIVÁLASZT | Ref.Link |FROM | Címtár Nómenklatúra HOGYAN Ref |HOL | Ref.név HASONLÓ ehhez: "%"

Néha olyan helyzet adódik, amikor az 1C 8.3-ban vagy 8.2-ben ki kell választania például az összes olyan elem könyvtárából, amelyek nevében szerepel a „glaze” szó. Vagy válassza ki a címtárból az összes olyan vállalkozót, akinek vezetéknevében az „Ivan” szó szerepel. Általában ellenőrizze néhány karakterlánc értékét.

Erre a célra van egy operátor az 1C 8.3 és 8.2 lekérdezésekben - „Hasonló”. A következő körülmények között használják:

Szerezzen ingyen 267 videóleckét 1C-n:

Hogyan használjunk sablonokat 1C lekérdezésekben?

Kiválasztási feltétel létrehozásához egy bizonyos sablont kell átadnia paraméterként. A sablon létrehozásához úgynevezett szolgáltatási szimbólumok állnak rendelkezésre.

Például a "%" karakter tetszőleges karaktersorozatot engedélyez:

Vannak más speciális karakterek is:

  • % (százalék) – tetszőleges karaktersorozatot engedélyez;
  • _ (aláhúzás) - tetszőleges karakter;
  • […] – egy tetszőleges karakter a zárójelben felsoroltak közül. A karakterek felsorolásán kívül tartományokat is használhat. Példa: a-o;
  • [^...] – ugyanaz, mint az előző, de fordítva. A "^" jel tagadást jelent.