استفاده مشابه درخواست 1s 8.2 است. مشابه شرایط پرس و جو

با وجود تمام کاستی ها، جستجوی فیلد متنی همچنان یکی از محبوب ترین هاست. ما می‌توانیم انواع داده‌های رشته‌ای را در همه جا پیدا کنیم - نام‌ها، شماره حساب‌ها، آدرس‌ها و همچنین اطلاعات دیگر را می‌توان در این قالب ذخیره کرد. در پرس و جوها در زبان داخلی 1C، برای راحتی توسعه دهندگان، از اپراتور ویژه "LIKE" استفاده می شود. این یکی از دستورات پر استفاده است، بنابراین بدون دانش کامل از نحو و قابلیت های آن، کار برای یک برنامه نویس دشوار خواهد بود.

با استفاده از عملگر LIKE

قبل از استفاده از هر عملگر در عمل، باید به وضوح هدف، مکان های کاربرد و نحو آن را درک کنید. هدف از استفاده از "LIKE" در درخواست 1C بررسی رضایت از شرایط ارائه شده به عنوان یک الگو است. مقدار بازگشتی یک نوع بولی است - درست یا نادرست - که نشان می دهد آیا شرط مشخص شده درست است. عملگر LIKE را می توان در چندین مکان در یک پرس و جو استفاده کرد:

  • در بلوک شرایط، تعیین شده با کلمه کلیدی "WHERE"؛
  • در طراحی Choice When then Otherwise End;
  • به طور مستقیم در فیلدهای انتخاب، در نتیجه مقایسه زمینه.

نحو تأیید همیشه یکسان است و از 3 پیوند تشکیل شده است. در سمت چپ مقدار متنی که در حال بررسی است، سپس خود عملگر "LIKE" و در سمت راست الگوی در حال بررسی است. برای ایجاد سریع و آسان الگوها، نمادهای خاصی وجود دارد که توسعه را آسان تر می کند:

  1. "%" دنباله ای از هر کاراکتر با طول دلخواه است. برای جستجوی کلمات یا اعداد جداگانه در یک رشته استفاده می شود.
  2. "_" - هر شخصیت واحد. در نظر گرفته شده برای نشان دادن حضور یک شخصیت واحد؛
  3. "[...]" دنباله ای از کاراکترها برای مقایسه با یک کاراکتر در یک رشته است. با کمک چنین الگوی، مطابقت با هر یک از کاراکترهای فهرست شده در پرانتز بررسی می شود. همچنین می توانید محدوده ای از اعداد یا حروف را مشخص کنید ([a-g], );
  4. "[^...]" الگوی مخالف الگوی قبلی است. تفاوت بین کاراکتر مشخص شده در خط و نویسه های ذکر شده در پرانتز بررسی می شود.

برای درک و درک بهتر اصول ایجاد قالب های صحیح، بیایید به نمونه هایی نگاه کنیم که اغلب در زندگی توسعه دهندگان با آن مواجه می شوند. اولین مورد زمانی است که باید از فهرست نامگذاری همه مواردی را انتخاب کنیم که در نام آنها کلمه "CUTTER" ظاهر می شود. در این مورد، باید از LIKE در شرایط پرس و جو استفاده کنیم:

نامگذاری.نام را به عنوان نام از فهرست راهنمای. نامگذاری به عنوان نامگذاری انتخاب کنید WHERE نامگذاری. نام مشابه "% CUTTER%"

اگر هر دو نماد "%" را حذف کنیم، پرس و جو محصولی را نشان می دهد که نام آن کاملاً با آنچه در علامت نقل قول مشخص شده مطابقت دارد. اگر الگوی "CUTTER%" یا "% CUTTER" را رها کنیم، نتیجه لیستی از آیتم‌ها خواهد بود که به ترتیب با ترکیبی از کاراکترها پایان یا شروع می‌شوند.


بیایید به مشکلی نگاه کنیم که می تواند برنامه نویسان مبتدی را که سینتکس پرس و جو را نمی دانند گیج کند. فرض کنید باید همه مواردی را که نماد "%" در نام خود دارند، پیدا کنید. به خصوص برای مواردی که نیاز به جستجوی کاراکترهای رزرو شده دارید، یک اپراتور "کاراکتر ویژه" وجود دارد. #,\,/,~ و کاراکترهای دیگر را می توان به عنوان یک کاراکتر خاص استفاده کرد، پس از آن هر کاراکتر رزرو شده به سادگی نشان دهنده یک علامت است.

نامگذاری.نام را به عنوان نام از فهرست راهنمای. نامگذاری به عنوان نامگذاری انتخاب کنید.

اگر نیاز به استفاده از یک پارامتر در جستجو دارید، متغیر در پرس و جو با پارامتر SIMILAR با استفاده از جمع استفاده می شود. به یاد داشته باشید که پارامتر باید از نوع رشته ای باشد یا باید آن را به رشته ای در درخواست تبدیل کنید. این یک عملیات نسبتاً پیچیده است و بهتر است از قبل آن را حذف کنید.

نامگذاری.نام را به عنوان نام از فهرست راهنمای. نامگذاری به عنوان نامگذاری انتخاب کنید.

عملکرد SIMILAR در تمامی نسخه‌های این پلتفرم، از 8 شروع می‌شود، و به دلیل کاربردی بودن آن، توسعه‌دهندگان 1C تمایلی به تغییر آن ندارند. البته جستجوی متنی همیشه به دقت نام وارد شده بستگی دارد، اما همچنان یکی از رایج ترین هاست. در این راستا، توسعه دهندگان حرفه ای 1C باید استفاده از SIMILAR را با تمام تفاوت های ظریف آن مطالعه کنند.

عملگر SIMILAR در یک پرس و جو، مقادیر رشته را از جداول برای شباهت به یک الگو بررسی می کند.
به صورت زیر استفاده می شود: رشته ای که باید بررسی شود در سمت چپ این عملگر قرار می گیرد و الگوی در سمت راست قرار می گیرد.

پس از بررسی، True یا False را برمی گرداند؛ بر این اساس، به طور فعال در شرایط استفاده می شود.
برای ایجاد یک الگو از کاراکترهای سرویس زیر استفاده می شود:

  • % (درصد) - دنباله ای حاوی هر تعداد کاراکتر دلخواه
  • _ (زیر خط) - یک کاراکتر دلخواه
  • […] (یک یا چند کاراکتر در براکت مربع) - هر کاراکتر منفرد که در داخل پرانتز ذکر شده است
    همچنین، علاوه بر نمادهای مختلف، می توانید از محدوده هایی استفاده کنید، به عنوان مثال a-z(A-z) که به معنای وجود یک نماد دلخواه در محدوده شامل انتهای محدوده است.
  • [^...] (در پرانتز یک علامت نفی به دنبال یک یا چند کاراکتر) - هر کاراکتری غیر از آنهایی که بعد از علامت نفی فهرست شده است.

نمادهای باقی مانده برای هدف مورد نظر خود استفاده می شوند.
اگر لازم است یکی از کاراکترهای سرویس فوق به عنوان نماد ارسال شود، باید قبل از آن باشد<Спецсимвол>. خودم<Спецсимвол>(هر کاراکتر مناسب) در همان عبارت بعد از کلمه کلیدی SPECIAL CHARACTER تعریف می شود.
به عنوان مثال، الگوی "%ABV[abvg]\_abv%" SPECIAL CHARACTER "\" به معنای یک رشته فرعی متشکل از دنباله ای از کاراکترها است:
حروف A; حروف B; حروف B; یک رقمی؛ یکی از حروف a، b، c یا d؛ زیر خط کشیدن حروف a; حروف ب حروف v.
علاوه بر این، این دنباله را می توان با مجموعه ای دلخواه از کاراکترها پیشی گرفت.

رویه انتخاب AgreementContainingInNameText(mText)
//در درخواست ما از قالبی مانند "%" + mText + "%" Request = New Request استفاده خواهیم کرد. Query.SetParameter("Name"، "%" + Text + "%"); Request.Text = "انتخاب | قراردادها. پیوند، | قراردادها. مالک | از | دایرکتوری. قراردادهای طرفین به عنوان توافقنامه | | WHERE | قراردادها. نام مشابه و نام"; نتیجه = Query.Run(); Selection = Result.Select(); Report("قراردادهای حاوی نام: " + mText + " دارای طرفین زیر هستند"); در حالی که Selection.Next() Cycle Report ("Counterparty: " + Selection.Owner + "؛ توافق: " + Selection. Link EndIf; EndProcedure

بیایید به هدف و کاربرد عملگر شرطی نگاه کنیم LIKE(eng. LIKE)در زبان پرس و جو 1C در مثال ها.

عبور سریع

هدف

بررسی کنید که آیا مقدار رشته در درخواست با الگوی مشخص شده مطابقت دارد یا خیر - یک مقدار بولی (TRUE یا FALSE) برمی گرداند.

  • چک مستقل از پرونده است.
  • این پرس و جو از نمایه های جدول استفاده می کند – که به نمایه های جستجوی متن کامل مربوط نمی شود.
  • ممکن است تکمیل آن با میزهای بزرگ زمان زیادی طول بکشد.
  • رشته هایی با طول نامحدود باید با استفاده از تابع SUBSTRING تبدیل شوند

مکان های استفاده

  • در شرایط اپراتور WHERE
  • در شرایط طراحی CHOICE WHEN<>سپس "" ELSE "" END
  • در فیلدهای انتخاب (به عنوان مثال: Name LIKE &ParameterSimilar to StringSuitable)

شرح نحو عملگر LIKE

پارامتر عملگر باید یک رشته باشد: می توان آن را به عنوان یک ثابت مشخص کرد یا به عنوان پارامتر درخواست ارسال کرد.

لفظ (ماسک) ذکر شده در زیر را می توان با هم یا جداگانه استفاده کرد.

مشخصات دقیق رشته

10 اول را انتخاب کنید
کلیدها. نام
از جانب
Directory.Keys AS Keys
جایی که
Keys.Name SIMILAR to "1" // معادل Keys.Name = "1"

نتیجه:

% یک کلمه تحت اللفظی به معنای تعداد دلخواه از هر کاراکتر است

10 اول را انتخاب کنید
کلیدها. نام
از جانب
Directory.Keys AS Keys
جایی که
Keys.Name مانند "%"

نتیجه: هر 10 مورد

_ (تاکید): مطابق تحت اللفظی هر یک از کاراکترها

مثال شماره 1:

10 اول را انتخاب کنید
کلیدها. نام
از جانب
Directory.Keys AS Keys
جایی که
Keys.Name مانند "_"

مثال شماره 2:با هر کاراکتری شروع می شود، به دنبال آن "1"، و سپس هر کاراکتر

10 اول را انتخاب کنید
کلیدها. نام
از جانب
Directory.Keys AS Keys
جایی که
Keys.Name SIMILAR to "_1%"

نتیجه:

(یک یا چند کاراکتر در پرانتز)

  • هر حرفی که با هر یک از کاراکترها مطابقت دارد به عنوان OR استفاده می شود.
    قابل قبول است که یک محدوده مشخص شود، به عنوان مثال a-z، 0-5، به معنی یک کاراکتر دلخواه از محدوده مشخص شده

مثال

10 اول را انتخاب کنید
کلیدها. نام
از جانب
Directory.Keys AS Keys
جایی که
Keys.Name SIMILAR to "[l]%"

نتیجه: 10 که با "l" یا "z" شروع می شود

مثال:شروع با 5،6،7

10 اول را انتخاب کنید
کلیدها. نام
از جانب
Directory.Keys AS Keys
جایی که
Keys.Name مانند "%"

نتیجه:

[^] (در پرانتز یک علامت فرار ^ به دنبال یک یا چند کاراکتر وجود دارد)

معادل هر کاراکتری (_) به جز موارد مشخص شده ()

مثال

10 اول را انتخاب کنید
کلیدها. نام
از جانب
Directory.Keys AS Keys
جایی که
Keys.Name SIMILAR to "8.[^012]%"//do not include 8.0,8.1,8.2

نتیجه: همه با "8" شروع می شوند. به استثنای موارد ذکر شده

SPECIAL CHARACTER - دستور برای تعیین کاراکترهای ثبت شده در بالا در درخواست

به عنوان نماد سرویس، استفاده از حداقل موارد زیر قابل قبول است: #,~,/,\

مثال:

10 اول را انتخاب کنید
کلیدها. نام
از جانب
Directory.Keys AS Keys
جایی که
Keys.Name مانند "#_" کاراکتر خاص "#"

نتیجه:

قابلیت کاربرد در پلتفرم ها

پارامترهای نادرست LIKE<>

  • یک پارامتر نوع غیر رشته ای ارسال می شود: به عنوان مثال، عدد 1 به جای رشته "1"
  • یک فیلد نوع غیر رشته ای با یک ماسک معتبر (مثلاً یک پیوند) مقایسه می شود یا هنگام اتصال، مقدار برای IsNUL بررسی نمی شود.

به متن خطا که در آن سوال نمایش داده می شود توجه کنید:

Keys.Name SIMILAR<>&L

اپراتور پسندیدنبه شما امکان می دهد داده های نوع رشته ای را در یک کوئری که در سمت چپ عملگر قرار دارد با داده های نوع رشته ای که در سمت راست عملگر قرار دارد مقایسه کنید. نتیجه مقایسه به True یا False ارزیابی می شود، بنابراین مقایسه می تواند به عنوان یک شرط اعمال شود.

برای اپراتور پسندیدنکاراکترهای سرویس ویژه ای وجود دارد که به عنوان یک رشته درک نمی شوند:

  • نماد "%" درصد: وجود هر تعداد کاراکتر دلخواه در یک رشته را نشان می دهد
  • "[...]" یک یا چند کاراکتر در کروشه مربع: نشان دهنده وجود هر یک از (تک) کاراکترهای فهرست شده است. همچنین، طیف وسیعی از کاراکترها را می توان مشخص کرد (به عنوان مثال)
  • "_" زیر خط: نشان دهنده وجود هر کاراکتر دلخواه است
  • کاراکتر نفی "[^...]": نشان دهنده وجود هر کاراکتر منفرد غیر از آنهایی است که در پرانتز مشخص شده اند.
در صورت نیاز به تعیین یکی از کاراکترهای ویژه بالا برای مقایسه، باید از کلمه کلیدی "SPECIAL SYMBOL" استفاده کنید.

ویژگی های استفاده با DBMS های مختلف

IBM DB2"فقط یک پارامتر را می توان در سمت راست عملگر SIMILAR قرار داد. تنها کاراکترهای عام عبارتند از "_" (خط زیر به معنای هر کاراکتر) و "%" (درصد به معنای دنباله ای از هر کاراکتر).
در صورت استفاده از DBMS " PostgreSQL" یا " پایگاه داده اوراکل«کاراکترهای ویژه «کراکت‌های مربع [...]» تنها در صورتی پذیرفته می‌شوند که در متن درخواست مشخص شده باشند و به عنوان پارامتر به درخواست ارسال نشوند.

بنابراین، در پایگاه داده فایل، کاراکترهای ویژه همیشه بسته به DBMS مورد استفاده در نسخه سرویس گیرنده-سرور، یکسان و متفاوت درک می شوند.

مثال: محصولات حاوی نماد "%" در نام را انتخاب کنید

انتخاب | Ref.Link |FROM | فهرست نامگذاری چگونه Ref | WHERE | Ref.Name مانند "%\%" نویسه خاص "\"

مثال: محصولاتی را انتخاب کنید که نام آنها با کلمه "Tank" شروع می شود.

انتخاب | Ref.Link |FROM | فهرست نامگذاری چگونه Ref | WHERE | Ref.Name SIMILAR to "Bak%"

مثال: محصولاتی را انتخاب کنید که نام آنها به یک عدد ختم می شود

انتخاب | Ref.Link |FROM | فهرست نامگذاری چگونه Ref | WHERE | Ref.Name SIMILAR to "%"

گاهی اوقات موقعیتی پیش می آید که در 1C 8.3 یا 8.2 باید انتخابی را انتخاب کنید، به عنوان مثال، از فهرستی از همه عناصری که کلمه "لعاب" را در نام خود دارند. یا از فهرست، تمام پیمانکارانی که نام خانوادگی آنها حاوی کلمه "ایوان" است را انتخاب کنید. به طور کلی، مقداری از رشته را بررسی کنید.

برای این منظور، یک اپراتور در جستارهای 1C 8.3 و 8.2 وجود دارد - "Similar". به ترتیب در شرایط زیر استفاده می شود:

267 درس ویدیویی را در 1C به صورت رایگان دریافت کنید:

چگونه از قالب ها در پرس و جوهای 1C استفاده کنیم؟

برای ایجاد یک شرط انتخاب، باید یک الگوی خاص را به عنوان پارامتر ارسال کنید. برای ایجاد یک الگو، به اصطلاح نمادهای سرویس وجود دارد.

به عنوان مثال، کاراکتر "%" هر دنباله ای از کاراکترهای دلخواه را مجاز می کند:

شخصیت های خاص دیگری نیز وجود دارد:

  • ٪ (درصد) - اجازه می دهد تا هر دنباله ای از شخصیت های دلخواه.
  • _ (زیر خط) - هر شخصیت واحد.
  • […] – یک نویسه دلخواه از نویسه های ذکر شده در داخل پرانتز. علاوه بر لیست کردن کاراکترها، می توانید از محدوده ها نیز استفاده کنید. مثال: a-o;
  • [^...] – مانند قبلی، اما برعکس. علامت «^» به معنای نفی است.