Π’ экосистСмС 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π±ΡƒΠ»Π΅Π²ΠΎ ΠΈΠ³Ρ€Π°Π΅Ρ‚ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ, являясь Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π±Π»ΠΎΠΊΠΎΠΌ для любой Π»ΠΎΠ³ΠΈΠΊΠΈ принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ логичСский Ρ‚ΠΈΠΏ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ всСго Π΄Π²Π° значСния: Π˜ΡΡ‚ΠΈΠ½Π° ΠΈΠ»ΠΈ Π›ΠΎΠΆΡŒ. НСсмотря Π½Π° свою ΠΊΠ°ΠΆΡƒΡ‰ΡƒΡŽΡΡ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Boolean критичСски Π²Π°ΠΆΠ½ΠΎ для написания ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, особСнно ΠΏΡ€ΠΈ построСнии слоТных условных конструкций ΠΈ запросов.

МногиС Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡƒΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ΠΈΠ· Π²ΠΈΠ΄Ρƒ Π½ΡŽΠ°Π½ΡΡ‹ привСдСния Ρ‚ΠΈΠΏΠΎΠ², связанныС с Π±ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ значСниями, Ρ‡Ρ‚ΠΎ часто ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΡƒΠ»ΠΎΠ²ΠΈΠΌΡ‹ΠΌ ошибкам Π² ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… систСмах. Π‘ΡƒΠ»Π΅Π²ΠΎ Π² 1Π‘ тСсно связано с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Число ΠΈ Π‘Ρ‚Ρ€ΠΎΠΊΠ°, ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ нСявного прСобразования ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ спСцифичСски. Π“Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ³Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π² эту Ρ‚Π΅ΠΌΡƒ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ошибок ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄.

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ синтаксичСскиС особСнности, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ практичСскоС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ этого Ρ‚ΠΈΠΏΠ° Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… конфигурациях. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ "ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ" ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с условными ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ.

ΠžΡΠ½ΠΎΠ²Ρ‹ опрСдСлСния ΠΈ синтаксис Ρ‚ΠΈΠΏΠ°

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π±ΡƒΠ»Π΅Π²ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ для хранСния логичСского Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° вычислСний. Π’ языкС 1Π‘ значСния этого Ρ‚ΠΈΠΏΠ° Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π˜ΡΡ‚ΠΈΠ½Π° ΠΈ Π›ΠΎΠΆΡŒ. Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ эти ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова ΡΠ²Π»ΡΡŽΡ‚ΡΡ рСгистронСзависимыми, ΠΎΠ΄Π½Π°ΠΊΠΎ для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ читаСмости ΠΊΠΎΠ΄Π° рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стандартноС написаниС с Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ Π±ΡƒΠΊΠ²Ρ‹. ΠŸΡ€ΠΈ объявлСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² модулях 1Π‘ Ρ‚ΠΈΠΏ часто опрСдСляСтся динамичСски, Π½ΠΎ Π² строгой Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ) Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ явно.

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ происходит Ρ‡Π΅Ρ€Π΅Π· прямоС ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ константы ΠΈΠ»ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния логичСского выраТСния. НапримСр, сравнСниС Π΄Π²ΡƒΡ… чисСл 5 > 3 Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²Π΅Ρ€Π½Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π˜ΡΡ‚ΠΈΠ½Π°. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, занимая ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ объСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΡ… ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ для использования Π² качСствС Ρ„Π»Π°Π³ΠΎΠ² состояния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ»ΠΈ условий Ρ†ΠΈΠΊΠ»ΠΎΠ².

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: НС ΠΏΡƒΡ‚Π°ΠΉΡ‚Π΅ строковыС прСдставлСния "Π˜ΡΡ‚ΠΈΠ½Π°"/"Π›ΠΎΠΆΡŒ" с самими логичСскими значСниями. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ строку ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π±Π΅Π· явного прСобразования Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ выполнСния ΠΈΠ»ΠΈ нСявноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ объявлСния ΠΈ использования ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΠΊΠΎΠ΄Π΅:

ΠŸΠ΅Ρ€Π΅ΠΌ ЀлагАктивности;

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ()

ЀлагАктивности = Π˜ΡΡ‚ΠΈΠ½Π°;

Если ЀлагАктивности Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("БистСма Π°ΠΊΡ‚ΠΈΠ²Π½Π°");

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° условия Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ Если происходит Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π±Π΅Π· нСобходимости ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с константой Π˜ΡΡ‚ΠΈΠ½Π°. Π­Ρ‚ΠΎ являСтся Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Ρ‚ΠΎΠ½ΠΎΠΌ программирования Π² 1Π‘. ИзлишнСС услоТнСниС конструкции, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, запись Если ЀлагАктивности = Π˜ΡΡ‚ΠΈΠ½Π° Π’ΠΎΠ³Π΄Π°, считаСтся ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ ΠΈ сниТаСт Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ исходного тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²: Число, Π‘Ρ‚Ρ€ΠΎΠΊΠ° ΠΈ Π‘ΡƒΠ»Π΅Π²ΠΎ

Одной ΠΈΠ· самых интСрСсных особСнностСй ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ являСтся ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ нСявного привСдСния Ρ‚ΠΈΠΏΠΎΠ². ЗначСния Ρ‚ΠΈΠΏΠ° Π±ΡƒΠ»Π΅Π²ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ автоматичСски ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Ρ‹ Π² числовой Ρ‚ΠΈΠΏ. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π˜ΡΡ‚ΠΈΠ½Π° становится Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ΠΉ (1), Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π›ΠΎΠΆΡŒ β€” Π½ΡƒΠ»Π΅ΠΌ (0). Π­Ρ‚Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² матСматичСских вычислСниях Π²Π½ΡƒΡ‚Ρ€ΠΈ запросов ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² для сокращСния ΠΊΠΎΠ΄Π°.

ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ: любоС числовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ ΠΎΡ‚ нуля, ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΊ Π±ΡƒΠ»Π΅Π²Ρƒ Ρ‚ΠΈΠΏΡƒ станСт Π˜ΡΡ‚ΠΈΠ½ΠΎΠΉ. Волько ноль прСобразуСтся Π² Π›ΠΎΠΆΡŒ. Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΄Π°ΠΆΠ΅ для ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл ΠΈ Π΄Ρ€ΠΎΠ±Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ПониманиС этого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹Π΅ условия, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ остороТности, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ логичСских ошибок ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π³Π΄Π΅ ноль ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ смысловоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

πŸ’‘

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π±ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ значСниями для подсчСта количСства Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… условий. НапримСр, сумма Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… логичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚, сколько ΠΈΠ· Π½ΠΈΡ… истинны.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² строковый Ρ‚ΠΈΠΏ происходит ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² сообщСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ записи Π² тСкстовыС Ρ„Π°ΠΉΠ»Ρ‹. Π’ этом случаС Π˜ΡΡ‚ΠΈΠ½Π° конвСртируСтся Π² строку "Π˜ΡΡ‚ΠΈΠ½Π°", Π° Π›ΠΎΠΆΡŒ β€” Π² "Π›ΠΎΠΆΡŒ". Однако ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ строки ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π±ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° автоматичСскоС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ сработаСт, Ссли строка Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ явно ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΈΠ»ΠΈ конструкциСй условия.

Для явного управлСния Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Ѐункция Π‘ΡƒΠ»Π΅Π²ΠΎ() ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для привСдСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΊ логичСскому Π²ΠΈΠ΄Ρƒ. Она ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π° ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с числами, строками, Π΄Π°Ρ‚Π°ΠΌΠΈ ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ссылочных Ρ‚ΠΈΠΏΠΎΠ². Если ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΡƒΡΡ‚ΡƒΡŽ строку, Π΄Π°Ρ‚Ρƒ Π½Π°Ρ‡Π°Π»Π° эры ΠΈΠ»ΠΈ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ссылку, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π›ΠΎΠΆΡŒ.

ЛогичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹ вычислСний

Π Π°Π±ΠΎΡ‚Π° с Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ Π² 1Π‘ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π±Π΅Π· использования стандартных логичСских ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²: И (AND), Π˜Π›Π˜ (OR) ΠΈ НЕ (NOT). Π­Ρ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ простыС условия Π² слоТныС логичСскиС выраТСния. ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ строго Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½: сначала вычисляСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ НЕ, Π·Π°Ρ‚Π΅ΠΌ И, ΠΈ Π² послСднюю ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π˜Π›Π˜.

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ "Π»Π΅Π½ΠΈΠ²ΠΎΠ³ΠΎ" вычислСния (short-circuit evaluation). Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ссли Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ логичСского выраТСния становится ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ послС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части, вторая Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. НапримСр, Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π›ΠΎΠΆΡŒ И БлоТнаяЀункция() функция БлоТнаяЀункция() Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ всСго выраТСния ΡƒΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊ Π›ΠΎΠΆΡŒ.

  • πŸ”Ή ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ И Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π˜ΡΡ‚ΠΈΠ½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли ΠΎΠ±Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° истинны.
  • πŸ”Ή ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π˜Π›Π˜ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π˜ΡΡ‚ΠΈΠ½Π°, Ссли хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ истинСн.
  • πŸ”Ή ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ НЕ ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: Π˜ΡΡ‚ΠΈΠ½Π° становится Π›ΠΎΠΆΡŒ ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ порядок ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ сущСствСнному сниТСнию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ВсСгда Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΠΉΡ‚Π΅ самыС "быстрыС" ΠΈ вСроятныС условия ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² И. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ систСмС Ρ€Π°Π½ΡŒΡˆΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ вычислСния ΠΈ Π½Π΅ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ рСсурсы Π½Π° лишниС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ слоТныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹.

πŸ“Š Какой ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ всСго Π² условиях?
И (AND)
Π˜Π›Π˜ (OR)
НЕ (NOT)
ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΡŽ всС

Рассмотрим Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ истинности для основных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹:

ΠžΠΏΠ΅Ρ€Π°Π½Π΄ А ΠžΠΏΠ΅Ρ€Π°Π½Π΄ Π‘ А И Π‘ А Π˜Π›Π˜ Π‘ НЕ А
Π˜ΡΡ‚ΠΈΠ½Π° Π˜ΡΡ‚ΠΈΠ½Π° Π˜ΡΡ‚ΠΈΠ½Π° Π˜ΡΡ‚ΠΈΠ½Π° Π›ΠΎΠΆΡŒ
Π˜ΡΡ‚ΠΈΠ½Π° Π›ΠΎΠΆΡŒ Π›ΠΎΠΆΡŒ Π˜ΡΡ‚ΠΈΠ½Π° Π›ΠΎΠΆΡŒ
Π›ΠΎΠΆΡŒ Π˜ΡΡ‚ΠΈΠ½Π° Π›ΠΎΠΆΡŒ Π˜ΡΡ‚ΠΈΠ½Π° Π˜ΡΡ‚ΠΈΠ½Π°
Π›ΠΎΠΆΡŒ Π›ΠΎΠΆΡŒ Π›ΠΎΠΆΡŒ Π›ΠΎΠΆΡŒ Π˜ΡΡ‚ΠΈΠ½Π°

ИспользованиС Π² условных ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… ΠΈ Ρ†ΠΈΠΊΠ»Π°Ρ…

Основная сфСра примСнСния Ρ‚ΠΈΠΏΠ° Π±ΡƒΠ»Π΅Π²ΠΎ β€” это ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ Если...Π’ΠΎΠ³Π΄Π°...Π˜Π½Π°Ρ‡Π΅ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π½Π° логичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒΡΡ Π² Π˜ΡΡ‚ΠΈΠ½Ρƒ ΠΈΠ»ΠΈ Π›ΠΎΠΆΡŒ. Ошибки Π² условии часто приводят ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° просто Π½Π΅ выполняСтся, Ρ‡Ρ‚ΠΎ Π² ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… систСмах ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ Π½Π΅ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈΠ»ΠΈ Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ расчСт суммы.

Π’ Ρ†ΠΈΠΊΠ»Π°Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Пока, условиС продолТСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ провСряСтся Π½Π° ΠΈΡΡ‚ΠΈΠ½Π½ΠΎΡΡ‚ΡŒ. Π¦ΠΈΠΊΠ» выполняСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π˜ΡΡ‚ΠΈΠ½Π°. ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΠΎ ensuring, Ρ‡Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ условиС Π½Π° Π›ΠΎΠΆΡŒ, ΠΈΠ½Π°Ρ‡Π΅ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ бСсконСчный Ρ†ΠΈΠΊΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° 1Π‘.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: БСсконСчныС Ρ†ΠΈΠΊΠ»Ρ‹ с условиСм Пока Π˜ΡΡ‚ΠΈΠ½Π° допустимы Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² спСцифичСских Π·Π°Π΄Π°Ρ‡Π°Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сСрвисы оТидания), ΠΈ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ прСрывания Ρ‡Π΅Ρ€Π΅Π· ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π²Π½Π΅ΡˆΠ½ΠΈΡ… событий. Π’ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠ΅ это считаСтся Π³Ρ€ΡƒΠ±ΠΎΠΉ ошибкой.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с коллСкциями Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°ΠΌΠΈ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° пустоту. Ѐункция ΠŸΡƒΡΡ‚Π°Ρ() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π±ΡƒΠ»Π΅Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, indicando, содСрТит Π»ΠΈ коллСкция элСмСнты. Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ способ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ обращСния ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ элСмСнту пустой Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ.

β˜‘οΈ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π»ΠΎΠ³ΠΈΠΊΠΈ условия

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 1

Π‘ΡƒΠ»Π΅Π²ΠΎ Π² запросах ΠΈ Π‘ΠšΠ” (БистСма Компоновки Π”Π°Π½Π½Ρ‹Ρ…)

Π’ языкС запросов 1Π‘ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π±ΡƒΠ»Π΅Π²ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ свои особСнности синтаксиса. Π’ тСкстС запроса логичСскиС константы Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ИБВИНА ΠΈ Π›ΠžΠ–Π¬ (часто Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ рСгистрС для выдСлСния, хотя рСгистр Π½Π΅ строг). Они ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² псСвдо-Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… для формирования слуТСбных Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π² условиях Π“Π”Π• для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ записСй.

Одной ΠΈΠ· ΠΌΠΎΡ‰Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΈΠΊ являСтся использованиС Π±ΡƒΠ»Π΅Π²Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ для динамичСского формирования ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² Π² Π‘ΠšΠ”. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² запрос, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΎΡ‚Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…. НапримСр, Ссли ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΠ’ΠΎΠ»ΡŒΠΊΠΎΠΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ€Π°Π²Π΅Π½ ИБВИНА, Π² запрос подставляСтся условиС ΠΎΡ‚Π±ΠΎΡ€Π°, ΠΈΠ½Π°Ρ‡Π΅ ΠΎΠ½ΠΎ игнорируСтся.

ВЫБРАВЬ

Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура.Бсылка КАК Бсылка,

Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура.НаимСнованиС КАК НаимСнованиС

Π˜Π—

Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура КАК Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ

Π“Π”Π•

(&ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π€ΠΈΠ»ΡŒΡ‚Ρ€ = Π›ΠžΠ–Π¬ Π˜Π›Π˜ Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.Π­Ρ‚ΠΎΠ“Ρ€ΡƒΠΏΠΏΠ° = ИБВИНА)

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ запроса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ хитрая Π»ΠΎΠ³ΠΈΠΊΠ°: Ссли ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ &ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π€ΠΈΠ»ΡŒΡ‚Ρ€ Π»ΠΎΠΆΠ΅Π½, условиС Π² скобках истинно для всСх строк (Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π›ΠžΠ–Π¬ = Π›ΠžΠ–Π¬), ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ истинСн, Ρ‚ΠΎ ΠΎΡ‚Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π³Ρ€ΡƒΠΏΠΏΡ‹. Π­Ρ‚ΠΎ позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Π΅ запросы Π±Π΅Π· динамичСского конструирования тСкста запроса Π² ΠΊΠΎΠ΄Π΅.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ запросов с Π±ΡƒΠ»Π΅Π²ΠΎ

ИспользованиС Π±ΡƒΠ»Π΅Π²Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² условиях "Π˜Π›Π˜" ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Ρƒ запросов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ индСксы. Π’ высоконагруТСнных систСмах провСряйтС ΠΏΠ»Π°Π½ выполнСния запроса.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ, сравнивая Π±ΡƒΠ»Π΅Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с 1 ΠΈΠ»ΠΈ 0 явно. Π₯отя это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ благодаря ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡŽ Ρ‚ΠΈΠΏΠΎΠ², Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ считаСтся Π΄ΡƒΡ€Π½Ρ‹ΠΌ Ρ‚ΠΎΠ½ΠΎΠΌ ΠΈ ΠΌΠ΅Π½Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ. ВмСсто Если Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = 1 Π’ΠΎΠ³Π΄Π° слСдуСт ΠΏΠΈΡΠ°Ρ‚ΡŒ Если Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π’ΠΎΠ³Π΄Π°. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ намСрСния программиста ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌΠΈ для любого, ΠΊΡ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° распространСнная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” Ρ€Π°Π±ΠΎΡ‚Π° с Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ значСниями (NULL). Π’ 1Π‘ NULL Π½Π΅ Ρ€Π°Π²Π΅Π½ Π›ΠΎΠΆΡŒ. ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ NULL Π² логичСском Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ошибка ΠΈΠ»ΠΈ нСпрСдсказуСмоС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. ВсСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ() ΠΈΠ»ΠΈ ΡΠ²Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π° NULL ΠΏΠ΅Ρ€Π΅Π΄ логичСскими опСрациями.

Для хранСния постоянных Ρ„Π»Π°Π³ΠΎΠ² Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ пСрСчислСния ΠΈΠ»ΠΈ Π±ΡƒΠ»Π΅Π²Ρ‹ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρ‹, Π° Π½Π΅ строки со значСниями "Π”Π°"/"НСт". Π­Ρ‚ΠΎ экономит мСсто Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ускоряСт Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ сравнСниС чисСл (Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС Π±ΡƒΠ»Π΅Π²ΠΎ) происходит быстрСС сравнСния строк.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ слСдитС Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠΎΠ² Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ΠΎΠ². Если Π±ΡƒΡ…Π³Π°Π»Ρ‚Π΅Ρ€ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» Ρ‚ΠΈΠΏ поля со Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π½Π° Π‘ΡƒΠ»Π΅Π²ΠΎ, старыС Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΡΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ. ВсСгда тСстируйтС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ историчСских Π΄Π°Π½Π½Ρ‹Ρ… послС Ρ‚Π°ΠΊΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

πŸ’‘

Чистый ΠΊΠΎΠ΄ с Π±ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ значСниями Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ явного сравнСния с Π˜ΡΡ‚ΠΈΠ½Π°/Π›ΠΎΠΆΡŒ ΠΈ ΠΈΠ·Π±Π΅Π³Π°Π΅Ρ‚ магичСских чисСл 0 ΠΈ 1 Π² условиях.

Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы (FAQ)

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΡƒΠ»Π΅Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ индСкс массива?

Π”Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π˜ΡΡ‚ΠΈΠ½Π° приводится ΠΊ 1, Π° Π›ΠΎΠΆΡŒ ΠΊ 0, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΡƒΠ»Π΅Π²Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для доступа ΠΊ элСмСнтам массива. НапримСр, Массив[Π€Π»Π°Π³] Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт ΠΏΡ€ΠΈ Π›ΠΎΠΆΡŒ ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈ Π˜ΡΡ‚ΠΈΠ½Π°. Однако Ρ‚Π°ΠΊΠΎΠΉ ΡΡ‚ΠΈΠ»ΡŒ программирования сниТаСт Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΈ Π½Π΅ рСкомСндуСтся ΠΊ использованию Π² ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ….

Π§Π΅ΠΌ отличаСтся функция Π‘ΡƒΠ»Π΅Π²ΠΎ() ΠΎΡ‚ простого присваивания?

Ѐункция Π‘ΡƒΠ»Π΅Π²ΠΎ() выполняСт явноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ°, обрабатывая Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ согласно ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (строки, числа, Π΄Π°Ρ‚Ρ‹). ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ присваиваниС Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΈΠΏ значСния ΡƒΠΆΠ΅ соотвСтствовал ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΌΡƒ, Π»ΠΈΠ±ΠΎ сработаСт ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ нСявного привСдСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Π½Π΅Π΅ прСдсказуСмым Π² слоТных выраТСниях.

Как Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π±ΡƒΠ»Π΅Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² рСгистрС свСдСний?

Π’ рСгистрах свСдСний ΠΈ накоплСния для хранСния логичСских Ρ„Π»Π°Π³ΠΎΠ² слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ измСрСния ΠΈΠ»ΠΈ рСсурсы с Ρ‚ΠΈΠΏΠΎΠΌ Π‘ΡƒΠ»Π΅Π²ΠΎ. Π­Ρ‚ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивный способ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния объСма Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ скорости Ρ€Π°Π±ΠΎΡ‚Ρ‹ запросов ΠΊ этим рСгистрам.

Π§Ρ‚ΠΎ Π²Π΅Ρ€Π½Π΅Ρ‚ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ "Π˜ΡΡ‚ΠΈΠ½Π° + Π˜ΡΡ‚ΠΈΠ½Π°"?

Π’ 1Π‘ арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ Π±ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ значСниями допустимы. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π˜ΡΡ‚ΠΈΠ½Π° + Π˜ΡΡ‚ΠΈΠ½Π° Π²Π΅Ρ€Π½Π΅Ρ‚ число 2, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ±Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Ρ‹ Π² Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ ΠΏΠ΅Ρ€Π΅Π΄ слоТСниСм. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΈΠΏ Число, Π° Π½Π΅ Π‘ΡƒΠ»Π΅Π²ΠΎ.