1s 8 so'rovda o'xshash. So'rov shartlariga o'xshash. "Like" operatoridan foydalanish

Shartli operatorning maqsadi va ishlatilishini ko'rib chiqamiz LIKE (ingliz. LIKE) misollarda 1C so'rovlar tilida.

Tez o'tish

Maqsad

So'rovdagi satr qiymati belgilangan naqshga mos kelishini tekshiring - mantiqiy qiymatni qaytaradi (TRUE yoki FALSE).

  • Tekshiruv vaziyatdan mustaqil.
  • So'rov to'liq matnli qidiruv indekslari bilan bog'liq bo'lmagan jadval indekslaridan foydalanadi.
  • Katta jadvallar bilan to'ldirish uchun uzoq vaqt kerak bo'lishi mumkin.
  • Cheksiz uzunlikdagi satrlarni SUBSTRING funksiyasi yordamida aylantirish kerak

Foydalanish joylari

  • QAYERDA operator shartlarida
  • Dizayn sharoitida TANLOV QACHON<>KEYIN "" BOSHQA "" OXIRGI
  • Tanlash maydonlarida (masalan: LIKE &Parameter nomi StringSuitable ga o'xshash)

LIKE operatori sintaksisining tavsifi

Operator parametri satr bo'lishi kerak: u doimiy sifatida ko'rsatilishi yoki so'rov parametri sifatida uzatilishi mumkin.

Quyida keltirilgan harflar (maskalar) birgalikda yoki alohida ishlatilishi mumkin.

To'g'ri chiziq spetsifikatsiyasi

Birinchi 10 tani tanlang
Kalitlar. Ism
FROM
Directory.Keys AS Keys
QAYERDA
Keys.Name O'XSHA "1" // Keys.Name ="1" ga ekvivalent

Natija:

% har qanday belgilarning ixtiyoriy sonini anglatadi

Birinchi 10 tani tanlang
Kalitlar. Ism
FROM
Directory.Keys AS Keys
QAYERDA
Tugmalar.Ismi "%" O'ZBEK

Natija: har qanday 10 ta element

_ (pastki chiziq): ​​har qanday belgiga mos keladigan harf

1-misol:

Birinchi 10 tani tanlang
Kalitlar. Ism
FROM
Directory.Keys AS Keys
QAYERDA
Tugmalar.Ismi "_" kabi

2-misol: har qanday belgidan boshlab, keyin "1" va keyin istalgan belgilar

Birinchi 10 tani tanlang
Kalitlar. Ism
FROM
Directory.Keys AS Keys
QAYERDA
Kalitlar. Nomi O‘XSHA – “_1%”

Natija:

(kvadrat qavs ichida bir yoki bir nechta belgilar)

  • Bir belgiga mos keladigan har bir harf OR sifatida ishlatiladi.
    Belgilangan diapazondan ixtiyoriy belgini anglatuvchi a-z,0-5 kabi diapazonni belgilash maqbuldir.

Misol

Birinchi 10 tani tanlang
Kalitlar. Ism
FROM
Directory.Keys AS Keys
QAYERDA
Kalitlar. Nomi "[l]%"ga o'xshash

Natija: 10 "l" yoki "z" bilan boshlanadi

Misol: 5,6,7 bilan boshlanadi

Birinchi 10 tani tanlang
Kalitlar. Ism
FROM
Directory.Keys AS Keys
QAYERDA
Tugmalar.Ismi "%" O'ZBEK

Natija:

[^] (kvadrat qavs ichida qochish belgisi ^ keyin bir yoki bir nechta belgilar mavjud)

Belgilanganlardan tashqari har qanday belgiga (_) ekvivalent ()

Misol

Birinchi 10 tani tanlang
Kalitlar. Ism
FROM
Directory.Keys AS Keys
QAYERDA
"8.[^012]%"ga o'xshash kalitlar//8.0,8.1,8.2 kiritilmagan

Natija: hammasi "8" bilan boshlanadi. ko'rsatilganlar bundan mustasno

SPECIAL CHARACTER - so'rovda yuqorida qayd etilgan belgilarni ko'rsatish buyrug'i

Xizmat belgisi sifatida kamida foydalanish mumkin: #,~,/,\

Misol:

Birinchi 10 tani tanlang
Kalitlar. Ism
FROM
Directory.Keys AS Keys
QAYERDA
Tugmalar.Ism "#_" MAXSUS BELGI "#" SAYT.

Natija:

Platformalarda qo'llanilishi

Noto'g'ri parametrlar LIKE<>

  • Parametr o'tkazilmaydi string turi: masalan, "1" qatori o'rniga 1 raqami
  • Satr turi bo'lmagan maydon to'g'ri niqob (masalan, havola) bilan taqqoslanadi yoki ulanishda IsNUL uchun qiymat tekshirilmaydi.

Savol ko'rsatilgan xato matniga e'tibor bering:

Kalitlar.Ism O'xshash<>&L

Ba'zida 1C 8.3 yoki 8.2 da siz, masalan, ularning nomida "sir" so'zi bo'lgan barcha elementlarning katalogidan tanlov qilishingiz kerak bo'lganda paydo bo'ladi. Yoki katalogdan familiyalarida "Ivan" so'zini o'z ichiga olgan barcha pudratchilarni tanlang. Umuman olganda, ba'zi bir satr qiymatini tekshiring.

Shu maqsadda 1C 8.3 va 8.2 so'rovlarida operator mavjud - "O'xshash". U mos ravishda quyidagi sharoitlarda qo'llaniladi:

1C da 267 ta video darslarni bepul oling:

1C so'rovlarida shablonlardan qanday foydalanish kerak?

Tanlash shartini yaratish uchun ma'lum bir shablonni parametr sifatida o'tkazish kerak. Shablonni yaratish uchun xizmat belgilari deb ataladigan narsalar mavjud.

Masalan, "%" belgisi har qanday ixtiyoriy belgilar ketma-ketligiga ruxsat beradi:

Boshqa maxsus belgilar mavjud:

  • % (foiz) - ixtiyoriy belgilarning istalgan ketma-ketligiga ruxsat beradi;
  • _ (pastki chiziq) - har qanday bitta belgi;
  • […] - qavs ichida sanab o'tilganlardan bitta ixtiyoriy belgi. Belgilar ro'yxatiga qo'shimcha ravishda siz diapazonlardan foydalanishingiz mumkin. Misol: a-o;
  • [^...] - oldingisi bilan bir xil, lekin teskari. "^" belgisi inkorni bildiradi.

Operator LIKE operatorning chap tomonida joylashgan so‘rovdagi satr tipidagi ma’lumotlarni operatorning o‘ng tomonida joylashgan qator tipidagi ma’lumotlar bilan solishtirish imkonini beradi. Taqqoslash natijasi to'g'ri yoki noto'g'ri deb baholanadi, shuning uchun taqqoslash shart sifatida qo'llanilishi mumkin.

Operator uchun LIKE Satr sifatida qabul qilinmaydigan maxsus xizmat belgilari mavjud:

  • "%" foiz belgisi: satrda istalgan miqdordagi ixtiyoriy belgilar mavjudligini bildiradi
  • "[...]" kvadrat qavs ichida bir yoki bir nechta belgilar: sanab o'tilgan belgilarning har qanday (bitta) mavjudligini bildiradi. Shuningdek, bir qator belgilar belgilanishi mumkin (masalan)
  • "_" pastki chiziq: har qanday ixtiyoriy belgi mavjudligini ko'rsatadi
  • "[^...]" inkor belgisi: kvadrat qavs ichida ko'rsatilganlardan boshqa har qanday bitta belgi mavjudligini bildiradi
Taqqoslash uchun yuqoridagi maxsus belgilardan birini ko'rsatish kerak bo'lsa, siz "MAXSUS RAMZ" kalit so'zidan foydalanishingiz kerak.

Turli DBMSlar bilan foydalanish xususiyatlari

IBM DB2"SIMILAR operatorining o'ng tomoniga faqat parametrni joylashtirish mumkin. Faqat joker belgilar "_" (har qanday belgini bildiradi) va "%" (har qanday belgilar ketma-ketligini bildiruvchi foiz).
DBMS dan foydalanilganda " PostgreSQL"yoki" Oracle ma'lumotlar bazasi"maxsus belgilar" kvadrat qavslar [...]" agar ular so'rovdagi matnda ko'rsatilgan bo'lsa, qabul qilinadi va so'rovga parametr sifatida o'tkazilmaydi.

Shunday qilib, fayl ma'lumotlar bazasida maxsus belgilar har doim bir xil tarzda qabul qilinadi va mijoz-server versiyasida ishlatiladigan DBMSga qarab har xil bo'ladi.

Misol: nomida "%" belgisi bo'lgan mahsulotlarni tanlang

SELECT | Ref.Link |FROM | Katalog Nomenklatura QANDAY Ref | QAYERDA | Ref.Nomi "%\%" MAXSUS BELGI "\"

Misol: nomlari "Tank" so'zi bilan boshlanadigan mahsulotlarni tanlang.

SELECT | Ref.Link |FROM | Katalog Nomenklatura QANDAY Ref | QAYERDA | Ref.Nomi "Bak%"ga o'xshash

Misol: nomlari raqam bilan tugaydigan mahsulotlarni tanlang

SELECT | Ref.Link |FROM | Katalog Nomenklatura QANDAY Ref | QAYERDA | Ref.Nomi "%" ga o'xshash

So'rovdagi SIMILAR operatori jadvaldagi satr qiymatlarini naqshga o'xshashligini tekshiradi.
U quyidagicha ishlatiladi: tekshiriladigan satr bu operatorning chap tomoniga, naqsh esa o'ngga joylashtiriladi.

Tekshirgandan so'ng, u "True" yoki "False" ni qaytaradi; shunga ko'ra, u shartlarda faol ishlatiladi.
Shablon yaratish uchun quyidagi xizmat belgilaridan foydalaniladi:

  • % (foiz) - ixtiyoriy belgilarning istalgan sonini o'z ichiga olgan ketma-ketlik
  • _ (pastki chiziq) - bitta ixtiyoriy belgi
  • […] (kvadrat qavs ichida bir yoki bir nechta belgilar) - kvadrat qavslar ichida keltirilgan har qanday bitta belgi
    Bundan tashqari, bundan mustasno turli belgilar diapazonlardan foydalanishingiz mumkin, masalan, a-z (A-z), ya'ni diapazonga ixtiyoriy belgi, jumladan, diapazonning oxiri kiradi.
  • [^...] (kvadrat qavs ichida inkor belgisi, keyin bir yoki bir nechta belgilar) - inkor belgisidan keyin sanab o'tilganlardan boshqa har qanday bitta belgi

Qolgan belgilar o'z maqsadlari uchun ishlatiladi.
Agar yuqoridagi xizmat belgilaridan birini ramz sifatida uzatish zarur bo'lsa, u holda undan oldin bo'lishi kerak<Спецсимвол>. O'zim<Спецсимвол>(har qanday mos belgi) keyin xuddi shu bayonotda aniqlanadi kalit so'z MAXSUS RAMZ.
Masalan, “%ABV[abvg]\_abv%” MAXSUS CHARACTER “\” qolipi belgilar ketma-ketligidan iborat pastki qatorni bildiradi:
A harflari; B harflari; B harflari; bitta raqam; a, b, c yoki d harflaridan biri; tagiga chizish; a harflari; b harflari; harflar v.
Bundan tashqari, bu ketma-ketlikdan oldin ixtiyoriy belgilar to'plami bo'lishi mumkin.

Shartnomani tanlash tartibi
//So'rovda "%" + mText + "%" kabi shablondan foydalanamiz Request = New Request; Query.SetParameter("Ism", "%" + Matn + "%"); Request.Text = "Tanlang | Shartnomalar. Havola, | Shartnomalar. Egasi | FROM | Katalog. Kontragentlarning shartnomalari shartnomalar AS | | QAYER | Shartnomalar. Nomi O'xshash & Nomi"; Natija = Query.Run(); Tanlash = Natija.Select(); Hisobot("O'z ichiga olgan shartnomalar: " + mText + " quyidagi kontragentlarga ega"); While Selection.Next() Cycle Report("Counterparty: " + Selection.Owner + "; Kelishuv: " + Tanlash. Link EndIf; EndProcedure

43
NULL - etishmayotgan qiymatlar. Nol qiymat bilan adashtirmaslik kerak! NULL raqam emas, bo'sh joy, bo'sh havola yoki Aniqlanmaganga teng emas. NULL - turni shakllantiruvchi qiymat, ya'ni. NULL turi va bu turdagi bitta qiymat mavjud. NULL... 26
1C platformasida ma'lumotlar bazasi jadvallariga so'rovlarni yaratish va bajarish uchun Query dasturlash tilining maxsus ob'ekti qo'llaniladi. Ushbu ob'ekt New Request konstruktsiyasini chaqirish orqali yaratiladi. Qulay so'rov... 18
Maqolada 1C v.8.2 so'rovlari bilan ishlashda foydali texnikalar, shuningdek, so'rovlar tili haqida unchalik ma'lum bo'lmagan ma'lumotlar keltirilgan. Men so'rovlar tilining to'liq tavsifini berishga harakat qilmayman, lekin faqat ... haqida to'xtalib o'tmoqchiman. 12
Men barcha to'lov hujjatlarini tanlash va ularni hujjat turi bo'yicha guruhlash vazifasiga duch keldim! Barcha uy-joy kommunal xizmatlari va Internetni ko'zdan kechirib, men buni angladim oddiy yo'l get Hujjat turi so'rovda yo'q:(men kerak edi...