Қолдану 1s 8.3 сұрауында ұқсас. Сұрау жағдайларындағы сияқты

ЛАЙК- Жолдың үлгіге ұқсастығын тексеруге арналған оператор. SQL тіліндегі LIKE аналогы.
Оператор ЛАЙКоның сол жағында көрсетілген өрнектің мәнін оң жағында көрсетілген үлгі жолымен салыстыруға мүмкіндік береді. Өрнектің мәні жол түрінде болуы керек. Егер өрнектің мәні үлгіге сәйкес келсе, оператордың нәтижесі ШЫН, әйтпесе ЖАЛҒАН болады.
Үлгі жолындағы келесі таңбалар қызметтік таңбалар болып табылады және жол таңбасынан басқа мағынаға ие:
. % (пайыз): кез келген еркін таңбалар санын қамтитын реттілік
. _ (астын сызу): бір ерікті таңба
. […] (in шаршы жақшаларбір немесе бірнеше таңба): төртбұрышты жақшаның ішінде тізімделген кез келген жалғыз таңба
Тізімде a-z сияқты ауқымдар болуы мүмкін, бұл ауқымдағы кез келген таңбаны, соның ішінде ауқымның соңын білдіреді.
. [^…] (төртбұрышты жақшада бір немесе бірнеше таңбадан кейін теріске шығару белгісі): терістеу белгісінен кейін тізімделгендерден басқа кез келген жалғыз таңба
Кез келген басқа таңба өзін білдіреді және ешқандай қосымша жүк көтермейді.
Тізімдегі таңбалардың бірін өзі ретінде жазу қажет болса, оның алдынан жазу керек<Спецсимвол>. Өзім<Спецсимвол>(кез келген қолайлы таңба) кейін сол мәлімдемеде анықталады кілт сөзАРНАЙЫ СИМВОЛ.
Мысалға, үлгісі “%ABC[abc]\_abc%” АРНАЙЫ таңба “\” таңбалар тізбегінен тұратын ішкі жолды білдіреді:
A әріптері; B әріптері; B әріптері; бір сан; a, b, c немесе d әріптерінің бірі; астын сызу сипаты; a әріптері; b әріптері; әріптер.
Оның үстіне, бұл тізбектің алдында таңбалардың ерікті жиыны болуы мүмкін.

Қолдану мысалдары:
Code 1C v 8.x процедурасы BankTextInputEnd(элемент, мәтін, мән, стандартты өңдеу)
StandardProcessing = False;
//"%" + сияқты үлгіні іздеу арқылы сұрау жасаңыз<Текст введенный пользователм в поле ввода> + "%"
Сұраныс = Жаңа сұраныс;
Query.SetParameter("Аты", "%" + Мәтін + "%");
Query.Text = "ТАҢДАУ
| Банктер.Сілтеме
| FROM
| Анықтамалық Банктер AS Banks
|ҚАЙДА
| Banks.Name &Name СИЯҚТЫ»;

Нәтиже = Request.Run();
Таңдау = Нәтиже.Таңдау();
Егер Result.Empty() болса
//Ештеңе табылмады. Мұнда сіз хабарлама немесе басқа нәрсені көрсете аласыз :)
Әйтпесе
//Нәтижелерді алу
tzResults = Result.Unload();
//Табылған элементтерді қамтитын мәндер тізімін дайындаңыз.
Мән = Жаңа мәндер тізімі();
Value.LoadValues(tzResults.UnloadColumn("Сілтеме"));
EndIf;
EndProcedure

«Әдепкі келісімдерге» тек Негізгі келісімнің атаулары және т.б. түсуі қажет:
Код 1C v 8.x Таңдауы
Атауы "Келісім #%" сияқты болса, "Келісім #" // "Келісім #" деп басталатын кез келген жол талапқа сай болады.
Атауы "Негізгі келісім-шарт%[^А-яЁё"+Символ(33)+"-"+Символ(126)+"№"""+Символдар.PS+Символдар.Таб+Символдар.ПФ+Символдар сияқты болған кезде. NPP+ Symbols.VTab+"]%", содан кейін "Әдепкі келісімдер" //"Негізгі келісім" деп басталатын кез келген жол орындалады
Әйтпесе «Басқа»
Келісімшарт түрі ретінде аяқталу

Ақпарат сайттан алынды

Оператор ЛАЙКсұраныста оператордың сол жағындағы жолдық типтегі мәліметтерді оператордың оң жағындағы жолдық типтегі деректермен салыстыруға мүмкіндік береді. Салыстыру нәтижесі ақиқат немесе жалған, сондықтан салыстыруды шарт ретінде қолдануға болады.

Оператор үшін ЛАЙКЖол ретінде қабылданбайтын арнайы қызметтік таңбалар беріледі:

  • "%" пайыз таңбасы: жолда кез келген еркін таңбалар санының болуын көрсетеді
  • "[...]" төртбұрышты жақшадағы бір немесе бірнеше таңба: тізімде көрсетілген таңбалардың кез келгенінің (біреуінің) болуын көрсетеді. Сондай-ақ, таңбалар ауқымын көрсетуге болады (мысалы )
  • «_» астын сызу таңбасы: кез келген ерікті таңбаның болуын көрсетеді
  • «[^...]» терістеу таңбасы: төртбұрышты жақшадағылардан басқа кез келген жалғыз таңбаның болуын білдіреді
Салыстыру үшін жоғарыда аталған арнайы таңбалардың бірін көрсету қажет болса, «АРНАЙЫ таңба» кілт сөзін пайдалану керек.

Әртүрлі ДҚБЖ-мен пайдалану ерекшеліктері

IBM DB2"LIKE операторының оң жағында тек параметрді орналастыруға болады. Үлгі таңбалары тек "_" (кез келген таңбаны білдіретін астын сызу) және "%" (кез келген таңбалар тізбегін білдіретін пайыз) болып табылады.
ДҚБЖ пайдаланған жағдайда « PostgreSQL«немесе» Oracle деректер қоры"арнайы таңбалар "шаршы жақшалар [...]" тек сұраудағы мәтінмен көрсетілген жағдайда ғана қабылданады және сұрауға параметр ретінде ӨТІЛМЕЙДІ.

Осылайша, файлдық базада арнайы таңбалар әрқашан бірдей қабылданатын болады және клиент-сервер нұсқасында қолданылатын ДҚБЖ-ға байланысты әртүрлі тәсілдермен қабылданады.

Мысал: атауында "%" белгісі бар өнімдерді таңдаңыз

ТАҢДАУ | Сілтеме | FROM | Справочник.Номенклатура ҚАЛАЙ реф |ҚАЙДА | Сілтеме атауы "%\%" АРНАЙЫ таңба "\" СИЯҚТЫ

Мысалы: аты «Танк» сөзінен басталатын өнімдерді таңдаңыз.

ТАҢДАУ | Сілтеме | FROM | Справочник.Номенклатура ҚАЛАЙ реф |ҚАЙДА | Сілтеме атауы "Buck%" сияқты

Мысалы: аты санмен аяқталатын өнімдерді таңдаңыз

ТАҢДАУ | Сілтеме | FROM | Справочник.Номенклатура ҚАЛАЙ реф |ҚАЙДА | Сілтеме атауы "%" LIKE

Барлық кемшіліктерге қарамастан, мәтіндік өрісті іздеу әлі де ең танымалдардың бірі болып табылады. Біз жол деректерінің түрлерін кез келген жерден таба аламыз - аттар, тіркелгі нөмірлері, мекенжайлар және басқа ақпарат осы пішімде сақталуы мүмкін. Кірістірілген 1С тіліндегі сұрауларда әзірлеушілерге ыңғайлы болу үшін арнайы «LIKE» операторы қолданылады. Бұл ең көп қолданылатын командалардың бірі, сондықтан оның синтаксисі мен мүмкіндіктерін жетік білмесе, бағдарламашыға жұмыс істеу қиынға соғады.

«LIKE» операторын қолдану

Кез келген операторды тәжірибеге енгізбес бұрын оның мақсатын, қолданылу орындарын және синтаксисін нақты түсіну керек. 1С сұранысында «LIKE» белгісін қолданудың мақсаты – үлгі ретінде ұсынылған шарттың қанағаттандырылуын тексеру. Қайтару мәні логикалық, ақиқат немесе жалған болып табылады, ол көрсетілген шарттың орындалғанын көрсетеді. LIKE операторын сұрауда бірнеше жерде қолдануға болады:

  • «ҚАЙДА» түйінді сөзімен көрсетілген шарттар блогында;
  • Құрылыста Таңдау, содан кейін басқаша аяқталады;
  • Тікелей таңдау өрістерінде, өрісті салыстыру нәтижесінде.

Тексеру синтаксисі әрқашан бірдей және 3 сілтемеден тұрады. Сол жақта тексерілетін мәтін мәні, содан кейін «LIKE» операторының өзі, ал оң жақта тексерілетін үлгі орналасқан. Жылдам және ыңғайлы үлгілеу үшін әзірлеуді жеңілдететін арнайы белгілер бар:

  1. «%» - еркін ұзындықтағы кез келген таңбалар тізбегі. Іздеу үшін қолданылады жеке сөздернемесе жолдағы сандар;
  2. «_» кез келген жалғыз таңба. Бір таңбаның болуын көрсетуге арналған;
  3. «[...]» - жолдағы белгімен салыстыруға арналған таңбалар тізбегі. Осындай үлгінің көмегімен жақшада көрсетілген таңбалардың кез келгеніне сәйкестік тексеріледі. Сондай-ақ сандар немесе әріптер ауқымын көрсетуге болады ([a-g], );
  4. «[^…]» алдыңғы үлгіге қарама-қарсы. Жолда көрсетілген таңба мен жақшада көрсетілген таңба арасындағы айырмашылық тексеріледі.

Дұрыс үлгілерді жасау принциптерін жақсырақ игеру және түсіну үшін әзірлеушілердің өмірінде жиі кездесетін кейбір мысалдарды қарастырайық. Біріншісі, номенклатуралық анықтамалықтан атауларында «КЕСКІШ» сөзі кездесетін барлық позицияларды таңдау қажет болғанда. Бұл жағдайда сұрау шарттарында LIKE қолдануымыз керек:

Номенклатураны ТАҢДАҢЫЗ.Аты каталогтан.Номенклатура АСҚАНДА Номенклатура ҚАЙДА Номенклатура.Аты "%CUTTER%" СИЯҚТЫ

Егер біз екі «%» таңбасын алып тастасақ, онда сұрау номенклатураны көрсетеді, онда атау тырнақшада көрсетілгенге толығымен сәйкес келеді. Егер біз «CUTTER%» немесе «%CUTTER» үлгісін қалдырсақ, онда нәтиже сәйкес символдардың берілген комбинациясы бар аяқталатын немесе басталатын номенклатураның тізімі болады.


Сұрау синтаксисін білмейтін жаңадан келген бағдарламашыларды шатастырып алатын мәселені талдап көрейік. Атауында «%» белгісі бар барлық номенклатураны табу керек делік. Әсіресе резервтелген таңбаларды іздеу қажет болған жағдайда «арнайы таңба» операторы бар. Арнайы таңба ретінде #, \, /, ~ және басқа таңбаларды пайдалануға болады, одан кейін кез келген сақталған таңбалар жай ғана таңбаны белгілейді.

Номенклатураны ТАҢДАҢЫЗ.Атты Каталогтан Аты РЕТІНДЕ.Номенклатура ҚАЙДА Номенклатура ҚАЙДА.

Іздеуде параметрді пайдалану қажет болса, LIKE параметрі бар сұраудағы айнымалы қосу арқылы пайдаланылады. Параметр жол түрі болуы керек немесе оны сұраудағы жолға түрлендіру қажет екенін есте сақтаңыз. Бұл өте күрделі операция және оны алдын ала алып тастау жақсы.

Номенклатураны ТАҢДАҢЫЗ.Аты Іздеу.Номенклатура АСҚАНДА Номенклатура ҚАЙДА Номенклатура.Аты "%" + &атауы + "%" сияқты

LIKE функциясы 8-ден бастап платформаның барлық нұсқаларында қолданылады және оның қолданылуына байланысты 1С әзірлеушілері оны өзгерткісі келмейді. Әрине, мәтінді іздеу әрқашан атауды енгізудің дәлдігіне байланысты, бірақ ол әлі де ең кең таралғандардың бірі болып қала береді. Осыған байланысты кәсіби 1С әзірлеушілері LIKE қолдануды оның барлық нюанстарымен зерттеуі керек.

Кейде 1С 8.3 немесе 8.2 нұсқаларында, мысалы, атауларында «мұздану» сөзі бар барлық элементтердің каталогынан таңдау қажет болған кезде жағдай туындайды. Немесе каталогтан фамилияларында «Иван» сөзі бар барлық контрагенттерді таңдаңыз. Жалпы, кейбір жол мәнін тексеріңіз.

Ол үшін 1С 8.3 және 8.2 сұрауларында оператор бар - «Ұнату». Ол сәйкесінше келесі жағдайларда қолданылады:

267 1С бейне сабақтарын тегін алыңыз:

1С сұрауларында үлгілерді қалай пайдалануға болады?

Таңдау шартын қалыптастыру үшін үлгіні параметр ретінде беру керек. Үлгіні жасау үшін қызмет белгілері деп аталатындар бар.

Мысалы, «%» таңбасы кез келген еркін таңбалар тізбегін береді:

Басқа ерекше кейіпкерлер бар:

  • % (пайыз) – ерікті символдардың кез келген тізбегін рұқсат етеді;
  • _ (астын сызу) – кез келген жалғыз символ;
  • […] жақшаның ішінде тізімделгендердің бір ерікті таңбасы. Таңбаларды санаумен қатар, ауқымдарды пайдалануға болады. Мысалы: a-o;
  • [^…] – алдыңғысымен бірдей, бірақ керісінше. «^» белгісі терістеуді білдіреді.

Сұраудағы LIKE операторы кестелердегі жол мәндерінің үлгіге ұқсастығын тексереді.
Ол келесідей пайдаланылады, осы оператордың сол жағында тексерілетін жол, ал оң жағында үлгі орналасқан.

Тексергеннен кейін ол True немесе False мәнін қайтарады, сәйкесінше шарттарда белсенді қолданылады.
Үлгіні жасау үшін келесі қызмет таңбалары пайдаланылады:

  • % (пайыз) – ерікті таңбалардың кез келген санын қамтитын реттілік
  • _ (астын сызу) - бір ерікті таңба
  • […] (тік жақшадағы бір немесе бірнеше таңба) – төртбұрышты жақшаның ішінде тізімделген кез келген бір таңба
    Сондай-ақ, әртүрлі таңбаларға қоса, ауқымдарды пайдалануға болады, мысалы, a-z(A-z), бұл диапазонға ерікті таңбаның, соның ішінде диапазонның ұштарын қамтитынын білдіреді.
  • [^…] (төртбұрышты жақшада терістеу белгісі, одан кейін бір немесе бірнеше таңба) – терістеу белгісінен кейін тізімделгендерден басқа кез келген жалғыз таңба

Қалған кейіпкерлер мақсатына сай пайдаланылады.
Жоғарыда көрсетілген қызметтік таңбалардың бірі таңба ретінде берілуі керек болса, оның алдында болуы керек<Спецсимвол>. Өзім<Спецсимвол>(кез келген қолайлы таңба) SPECIAL CHARACTER кілт сөзінен кейін сол операторда анықталады.
Мысалы, “%ABC[abc]\_abc%” АРНАЙЫ таңба “\” үлгісі таңбалар тізбегінен тұратын ішкі жолды білдіреді:
A әріптері; B әріптері; B әріптері; бір сан; a, b, c немесе d әріптерінің бірі; астын сызу сипаты; a әріптері; b әріптері; әріптер.
Оның үстіне, бұл тізбектің алдында таңбалардың ерікті жиыны болуы мүмкін.

Процедура ContainingInNameText(mText)ContractContract Selection
//Сұрауда біз "%" + mText + "%" сияқты үлгіні қолданамыз Сұраныс = Жаңа сұраныс; Query.SetParameter("Аты", "%" + Мәтін + "%"); Query.Text = "ТАҢДАУ | Келісім. Анықтама, | Келісім. Меншік иесі | КІЗДЕН | Анықтамалық. Келісім-шарттар контрагенттер КЕЛІСІМІ | | ҚАЙДА | Келісім. Аты LIKE & Name"; Нәтиже = Request.Run(); Таңдау = Нәтиже.Таңдау(); Report("Атауында бар келісімдер: " + mText + " келесі контрагенттерге ие»); While Selection.Next() цикл есебі("Тіркелгі: " + Selection.Owner + "; Шарт: " + Selection.Reference EndIf; EndProcedure

Мақала ұнады ма? Достарыңызбен бөлісіңіз!
Бұл мақала пайдалы болды ма?
Иә
Жоқ
Пікіріңізге рахмет!
Бірдеңе дұрыс болмады және сіздің дауысыңыз есептелмеді.
Рақмет сізге. Сіздің хабарламаңыз жіберілді
Мәтіннен қате таптыңыз ба?
Оны таңдаңыз, басыңыз Ctrl+Enterжәне біз оны түзетеміз!