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

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² языкС 1Π‘ символ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ " являСтся строго Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠΌ Π½Π°Ρ‡Π°Π»Π° ΠΈ ΠΊΠΎΠ½Ρ†Π° строкового Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°. Когда ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π²ΠΈΠ΄ΠΈΡ‚ этот символ, ΠΎΠ½ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹Π΅, Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ такая ΠΆΠ΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ° Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ строки. Если Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ попытаСтся просто Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ Π²Π½ΡƒΡ‚Ρ€ΠΈ тСкста, систСма воспримСт это ΠΊΠ°ΠΊ ΠΊΠΎΠ½Π΅Ρ† строки ΠΈ выдаст сообщСниС ΠΎΠ± ошибкС «НСвСрный синтаксис».

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой Π·Π°Π΄Π°Ρ‡ΠΈ сущСствуСт нСсколько ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ зависят ΠΎΡ‚ контСкста: ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ ΠΊΠΎΠ΄ Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚Π΅ запрос ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ настраиваСтС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ внСшнСй ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. ПониманиС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° экранирования ΠΈ ΠΏΡ€Π°Π²ΠΈΠ» ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ строк ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ сбоСв Π² Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

ΠŸΡ€Π°Π²ΠΈΠ»Π° экранирования ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π² ΠΊΠΎΠ΄Π΅ 1Π‘

Π‘Π°ΠΌΡ‹ΠΉ распространСнный способ вставки Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΡŒ строки β€” это использованиС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° удвоСния символа. Π’ синтаксисС 1Π‘, Ссли Π²Π½ΡƒΡ‚Ρ€ΠΈ строкового Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ саму Π΄Π²ΠΎΠΉΠ½ΡƒΡŽ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ, Π΅Ρ‘ слСдуСт Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²Π°ΠΆΠ΄Ρ‹ подряд. Для ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ "" Π²Π½ΡƒΡ‚Ρ€ΠΈ строки являСтся Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹ΠΌ символом ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Рассмотрим простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π° экранС отобразился тСкст Он сказал "ΠŸΡ€ΠΈΠ²Π΅Ρ‚", Ρ‚ΠΎ Π² ΠΊΠΎΠ΄Π΅ это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ записано ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Он сказал ""ΠŸΡ€ΠΈΠ²Π΅Ρ‚""");

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ внСшниС ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ всю строку, Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΏΠ°Ρ€Ρ‹ символов "" ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² ΠΎΠ΄ΠΈΠ½ символ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ. Π­Ρ‚ΠΎ стандартноС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° языков, Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ… синтаксисом Pascal ΠΈ C, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ относится ΠΈ встроСнный язык ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² тСкстС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² названиях Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ»ΠΈ Ρ†ΠΈΡ‚Π°Ρ‚Π°Ρ…), ΠΈΡ… ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ слуТСбными символами строкового Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π° Π² 1Π‘.

πŸ’‘

Если Π²Ρ‹ Π·Π°Π±Ρ‹Π»ΠΈ ΡƒΠ΄Π²ΠΎΠΈΡ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ, систСма подсвСтит мСсто ошибки красным Ρ†Π²Π΅Ρ‚ΠΎΠΌ сразу ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΡƒΠΊΠ°Π·Π°Π² Π½Π° Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ синтаксис.

ИспользованиС ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ строк

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ способом вставки ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ являСтся Ρ€Π°Π·Ρ€Ρ‹Π² строки ΠΈ использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ (слоТСния строк). Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ особСнно ΡƒΠ΄ΠΎΠ±Π΅Π½, ΠΊΠΎΠ³Π΄Π° Π² тСкстС содСрТится мноТСство ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° строка формируСтся динамичСски ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

Π‘ΡƒΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅ΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ строку, добавляСм ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ строковый Π»ΠΈΡ‚Π΅Ρ€Π°Π» ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ строку. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ слоТСния + склСиваСт эти части Π² Π΅Π΄ΠΈΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ ΠΈΠ»ΠΈ сохранСниСм.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° с использованиСм ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ:

ВСкстБообщСния = "Π€Ρ€Π°Π·Π°: " + """ + "Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅" + """ + " β€” ΠΊΠΎΠ½Π΅Ρ† Ρ„Ρ€Π°Π·Ρ‹";

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(ВСкстБообщСния);

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Ρ‚Ρ€ΠΈ части. ΠŸΠ΅Ρ€Π²Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ β€” это Π½Π°Ρ‡Π°Π»ΠΎ Ρ„Ρ€Π°Π·Ρ‹. Вторая Ρ‡Π°ΡΡ‚ΡŒ β€” это строка, состоящая Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ """" (здСсь внСшниС ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ строку, Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Π΄Π²Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΠΎΠ΄Π½Ρƒ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΡƒΡŽ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ). Π’Ρ€Π΅Ρ‚ΡŒΡ Ρ‡Π°ΡΡ‚ΡŒ β€” ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ тСкста.

Π₯отя этот способ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ большС мСста Π² ΠΊΠΎΠ΄Π΅, ΠΎΠ½ часто Π΄Π΅Π»Π°Π΅Ρ‚ Π»ΠΎΠ³ΠΈΠΊΡƒ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠΉ для ΠΊΠΎΠ»Π»Π΅Π³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ сразу Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΡƒΠ΄Π²ΠΎΠ΅Π½Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² Π΄Π»ΠΈΠ½Π½ΠΎΠΌ тСкстС. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, конкатСнация Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΠ°, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ° хранится Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

  • πŸ”Ή Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡƒΠ΄Π²ΠΎΠ΅Π½ΠΈΠ΅ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ для ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… статичСских строк.
  • πŸ”Ή ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠΉΡ‚Π΅ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΡŽ для слоТных составных сообщСний.
  • πŸ”Ή Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ смСшивания ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² ΠΎΠ΄Π½ΠΎΠΉ строкС Π±Π΅Π· нСобходимости.
πŸ“Š Какой способ Π²Π²ΠΎΠ΄Π° ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
УдвоСниС символа ("")
ΠšΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΡ строк (+)
Ѐункция Π‘ΠΈΠΌΠ²ΠΎΠ»()
ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π°

Π Π°Π±ΠΎΡ‚Π° с ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ Π² запросах ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…

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

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² запрос строку, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для поиска названия Ρ‚ΠΎΠ²Π°Ρ€Π° Π‘Ρ‚ΠΎΠ» "ΠžΡ„ΠΈΡΠ½Ρ‹ΠΉ", Π²Π°ΠΌ придСтся ΡƒΡ‡Π΅ΡΡ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ. Π’Π½ΡƒΡ‚Ρ€ΠΈ тСкста запроса ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ° экранируСтся ΡƒΠ΄Π²ΠΎΠ΅Π½ΠΈΠ΅ΠΌ, Π° сам тСкст запроса, находящийся Π² ΠΊΠΎΠ΄Π΅ 1Π‘, Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ экранирования своих ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ формирования запроса:

Запрос = Новый Запрос;

Запрос.ВСкст =

"ВЫБРАВЬ

| НомСнклатура.НаимСнованиС

|Π˜Π—

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

|Π“Π”Π•

| НомСнклатура.НаимСнованиС = ""Π‘Ρ‚ΠΎΠ» """"ΠžΡ„ΠΈΡΠ½Ρ‹ΠΉ""""""";

Π—Π΄Π΅ΡΡŒ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ°: строка запроса Π² ΠΊΠΎΠ΄Π΅ 1Π‘ начинаСтся ΠΈ заканчиваСтся Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ. Π’Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Ρ‘, для языка запросов, строковоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ "Π‘Ρ‚ΠΎΠ» "ΠžΡ„ΠΈΡΠ½Ρ‹ΠΉ"" Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ€Π°ΠΌΠ»Π΅Π½ΠΎ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ каскад символов: Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ подряд """" Π² ΠΊΠΎΠ΄Π΅ 1Π‘ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π² Π΄Π²Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ "" для языка запросов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΠΎΠ΄Π½Ρƒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния запроса.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Ошибки Π² количСствС ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΏΡ€ΠΈ написании запросов ΡΠ²Π»ΡΡŽΡ‚ΡΡ самой частой ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ падСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ с ошибкой «БинтаксичСская ошибка Π² тСкстС запроса». ВсСгда провСряйтС ΠΏΠ°Ρ€Π½ΠΎΡΡ‚ΡŒ символов.

Для упрощСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Π°ΠΊΠΈΠΌΠΈ конструкциями рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ запроса. Π­Ρ‚ΠΎ позволяСт ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π½Π΅ Π·Π°Π±ΠΎΡ‚ΡΡΡŒ ΠΎ Ρ€ΡƒΡ‡Π½ΠΎΠΌ экранировании ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов Π²Π½ΡƒΡ‚Ρ€ΠΈ тСкста запроса.

ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘ΠΈΠΌΠ²ΠΎΠ» ΠΈ ΠΊΠΎΠ΄ΠΎΠ² ASCII

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ тСхничСски Π³Ρ€Π°ΠΌΠΎΡ‚Π½Ρ‹ΠΉ способ вставки ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ β€” использованиС встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘ΠΈΠΌΠ²ΠΎΠ»(). Π­Ρ‚Π° функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строку, ΡΠΎΡΡ‚ΠΎΡΡ‰ΡƒΡŽ ΠΈΠ· символа с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ASCII (ΠΈΠ»ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ).

Код Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ASCII Ρ€Π°Π²Π΅Π½ 34. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π²Ρ‹Π·ΠΎΠ² Π‘ΠΈΠΌΠ²ΠΎΠ»(34) Π²Π΅Ρ€Π½Π΅Ρ‚ строку, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ ΠΎΠ΄ΠΈΠ½ символ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρƒ с Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ подсчСтом ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΊΠΎΠ΄Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования:

ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠ° = Π‘ΠΈΠΌΠ²ΠΎΠ»(34);

ВСкст = "Π¦Π΅Π½Π° Ρ‚ΠΎΠ²Π°Ρ€Π°: " + ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠ° + "1000 Ρ€ΡƒΠ±." + ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠ°;

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(ВСкст);

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π½Π΅ Ρ…ΠΎΡ‡Π΅Ρ‚ Π²Π³Π»ΡΠ΄Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² ряды ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… символов. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, это ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ CSV-Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… тСкстовых ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ², Π³Π΄Π΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ.

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° Π§ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ Риск ошибки
Π£Π΄Π²ΠΎΠ΅Π½ΠΈΠ΅ "" БрСдняя Высокий (Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ ΠΏΠ°Ρ€Ρƒ)
ΠšΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΡ + """" + Низкая (Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΎ) Π‘Ρ€Π΅Π΄Π½ΠΈΠΉ
Ѐункция Π‘ΠΈΠΌΠ²ΠΎΠ» Π‘ΠΈΠΌΠ²ΠΎΠ»(34) Высокая Низкий
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ запроса &ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Высокая ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ
πŸ’‘

ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘ΠΈΠΌΠ²ΠΎΠ»(34) являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌ способом ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹ ΠΏΡ€ΠΈ написании слоТного ΠΊΠΎΠ΄Π°.

ΠžΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ: Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°

Часто Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос: ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ' вмСсто Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… для ограничСния строк, ΠΊΠ°ΠΊ это дСлаСтся Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² JavaScript ΠΈΠ»ΠΈ PHP)? Π’ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ ΠΎΡ‚Π²Π΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π΅Π½: Π½Π΅Ρ‚.

Π―Π·Ρ‹ΠΊ 1Π‘ строго Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ использования Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ для обозначСния строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ². ΠžΠ΄ΠΈΠ½Π°Ρ€Π½Π°Ρ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ° считаСтся ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ символом тСкста. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ свободно ΠΏΠΈΡΠ°Ρ‚ΡŒ тСкст Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ экранирования.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ использования:

ВСкст = "Он сказал: 'Π― ΠΏΡ€ΠΈΠ΄Ρƒ Π·Π°Π²Ρ‚Ρ€Π°'.";

// Π­Ρ‚ΠΎ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠΉ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΡƒΡ…ΠΈΡ‰Ρ€Π΅Π½ΠΈΠΉ.

Однако, Ссли ваша Π·Π°Π΄Π°Ρ‡Π° состоит ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Π²Ρ‹Π²ΠΎΠ΄Π΅ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π·Π°ΠΌΠ΅Π½Π° Π΅Ρ‘ Π½Π° ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½ΡƒΡŽ нСдопустима, Ссли это мСняСт смысл Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ строгого Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° JSON ΠΈΠ»ΠΈ XML, Π³Π΄Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΈΠΌΠ΅ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅).

Π’Π°ΠΊΠΆΠ΅ стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π² ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΡˆΡ€ΠΈΡ„Ρ‚Π°Ρ…. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠ½ΠΎΡˆΠΈΡ€ΠΈΠ½Π½Ρ‹Ρ… ΡˆΡ€ΠΈΡ„Ρ‚Π°Ρ… Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΊΠΎΠ΄Π° 1Π‘ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π°Ρ ΠΈ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π°Ρ Β«Π΅Π»ΠΎΡ‡ΠΊΠΈΒ» «» ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π½ΠΎ это Ρ€Π°Π·Π½Ρ‹Π΅ символы с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠ΄Π°ΠΌΠΈ. ИспользованиС типографских ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π² ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: НС ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΈΠ· тСкстовых Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² (Word, Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹) прямо Π² ΠΊΠΎΠ΄ 1Π‘. Они ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ Π½Π° Β«ΡƒΠΌΠ½Ρ‹Π΅Β» ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ систСма Π½Π΅ распознаСт ΠΊΠ°ΠΊ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΠΈ строки.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ ΠΈ экспортС Π΄Π°Π½Π½Ρ‹Ρ…

ΠŸΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ с внСшними систСмами (CSV, XML, JSON) ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ встаСт особСнно остро. Π€ΠΎΡ€ΠΌΠ°Ρ‚ CSV, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°ΠΌΠΈΡ‚Π΅Π»ΡŒ ΠΏΠΎΠ»Π΅ΠΉ, Ρ‡Ρ‚ΠΎ создаСт ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚, Ссли Π²Π½ΡƒΡ‚Ρ€ΠΈ самого поля Π΅ΡΡ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°.

ΠŸΡ€ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² CSV ΠΈΠ· 1Π‘ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ стандарт RFC 4180. Богласно Π΅ΠΌΡƒ, Ссли ΠΏΠΎΠ»Π΅ содСрТит ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, всё ΠΏΠΎΠ»Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π° каТдая внутрСнняя ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄Π²ΠΎΠ΅Π½Π°. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ прСдоставляСт инструмСнты для автоматичСской ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Π°ΠΊΠΈΡ… ситуаций, Π½ΠΎ ΠΏΡ€ΠΈ Ρ€ΡƒΡ‡Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с JSON Π² 1Π‘ (начиная с вСрсии 8.3.10) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π§Ρ‚Π΅Π½ΠΈΠ΅JSON ΠΈ Π—Π°ΠΏΠΈΡΡŒJSON. Π­Ρ‚ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ автоматичСски Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ экранированиСм ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, ΠΏΡ€ΠΈ сСриализации ΠΈ дСсСриализации Π΄Π°Π½Π½Ρ‹Ρ….

Если Π²Ρ‹ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚Π΅ JSON-строку Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ (Ρ‡Ρ‚ΠΎ Π½Π΅ рСкомСндуСтся), Π²Π°ΠΌ придСтся ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ слэшСм \, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ стандарт JSON Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΎΡ‚ Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ языка 1Π‘.

Как ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ Π² JSON Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ?

Π’ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON двойная ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ° экранируСтся ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ слэшСм. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: "text": "Он сказал \"ΠŸΡ€ΠΈΠ²Π΅Ρ‚\"". Π’ 1Π‘ это Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ конкатСнация: "Он сказал \"" + "ΠŸΡ€ΠΈΠ²Π΅Ρ‚" + "\"".

  • πŸ”Ή ΠŸΡ€ΠΈ экспортС Π² CSV ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ встроСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ записи Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°.
  • πŸ”Ή Для JSON Π΄ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ экранированиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ записи JSON.
  • πŸ”Ή ΠŸΡ€ΠΈ парсингС тСкстов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ для Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

ЧастыС ошибки ΠΈ способы ΠΈΡ… устранСния

Π”Π°ΠΆΠ΅ зная Ρ‚Π΅ΠΎΡ€ΠΈΡŽ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки. Бамая распространСнная ΠΈΠ· Π½ΠΈΡ… β€” «потСря» Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΏΡ€ΠΈ ΡƒΠ΄Π²ΠΎΠ΅Π½ΠΈΠΈ. Π“Π»Π°Π· «замыливаСтся», ΠΈ вмСсто "" ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ ΠΎΠ΄Π½Π° ", Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Ρ‹Π²Π°Π΅Ρ‚ строку.

Другая ошибка β€” ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ для ограничСния строки Π² Π½Π°Π΄Π΅ΠΆΠ΄Π΅, Ρ‡Ρ‚ΠΎ систСма ΠΏΠΎΠΉΠΌΠ΅Ρ‚ контСкст. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ одинарная ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ° становится Ρ‡Π°ΡΡ‚ΡŒΡŽ строки, Π° Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π°Ρ двойная ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ° ищСтся дальшС ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ, часто Π½Π°Ρ…ΠΎΠ΄ΡΡΡŒ Π² ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС.

Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Ρ‚Π°ΠΊΠΈΡ… ошибок ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ подсвСтку синтаксиса. Π’ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π΅ 1Π‘ строковыС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Ρ†Π²Π΅Ρ‚ΠΎΠΌ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ красным ΠΈΠ»ΠΈ синим, Π² зависимости ΠΎΡ‚ Ρ‚Π΅ΠΌΡ‹). Если Ρ†Π²Π΅Ρ‚ прСрываСтся посСрСдинС Ρ„Ρ€Π°Π·Ρ‹ ΠΈΠ»ΠΈ ΠΎΠΊΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ лишний кусок ΠΊΠΎΠ΄Π° β€” Π·Π½Π°Ρ‡ΠΈΡ‚, Π½Π°Ρ€ΡƒΡˆΠ΅Π½ баланс ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ.

Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ строки. Если Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ Π΄Π»ΠΈΠ½Ρƒ 10 символов, Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ 11 ΠΈΠ»ΠΈ 9, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, лишняя ΠΈΠ»ΠΈ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ° исказила Π΄Π°Π½Π½Ρ‹Π΅.

β˜‘οΈ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° строки с ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 4
МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ для ограничСния строк Π² 1Π‘?

НСт, Π² языкС 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ строковыС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ. ΠžΠ΄ΠΈΠ½Π°Ρ€Π½Π°Ρ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ° трактуСтся ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹ΠΉ символ.

Как Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ запроса?

ΠŸΡ€ΠΈ использовании ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² запроса (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, &Π˜ΠΌΡΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°) экранированиС ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° происходит автоматичСски. Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ строку с ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΎΠΉ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ способом (ΡƒΠ΄Π²ΠΎΠ΅Π½ΠΈΠ΅ΠΌ Π² ΠΊΠΎΠ΄Π΅ 1Π‘), Π° Π² тСкст запроса Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΊΠΎΠ΄ Π½Π΅ сохраняСтся с ошибкой «НСвСрный синтаксис»?

Π§Π°Ρ‰Π΅ всСго это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ количСство ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΠΈ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π½Π΅ совпадаСт. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, всС Π»ΠΈ строки Π·Π°ΠΌΠΊΠ½ΡƒΡ‚Ρ‹, ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π»ΠΈ экранированы Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ (ΡƒΠ΄Π²ΠΎΠ΅Π½ΠΈΠ΅ΠΌ).

Какой ΠΊΠΎΠ΄ Ρƒ символа Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ?

Код символа Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ASCII Ρ€Π°Π²Π΅Π½ 34. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π‘ΠΈΠΌΠ²ΠΎΠ»(34).

Как ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с JSON Π² 1Π‘?

Π›ΡƒΡ‡ΡˆΠΈΠΉ способ β€” Π½Π΅ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ JSON-строки Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠ΅ΠΉ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π—Π°ΠΏΠΈΡΡŒJSON ΠΈ Π§Ρ‚Π΅Π½ΠΈΠ΅JSON, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ всС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΈ слэши.