Π Π°Π±ΠΎΡ‚Π° с тСкстовыми Π΄Π°Π½Π½Ρ‹ΠΌΠΈ являСтся Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ΠΎΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8. Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ строк, ΠΈΠ»ΠΈ конкатСнация, трСбуСтся повсСмСстно: ΠΎΡ‚ формирования простых сообщСний ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π΄ΠΎ создания слоТных SQL-запросов ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² XML. ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с вопросом ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ способ объСдинСния тСкстовых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΈ эффСктивным Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ситуации.

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

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ основныС инструмСнты ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками. ΠœΡ‹ рассмотрим ΠΊΠ°ΠΊ синтаксичСскиС возмоТности встроСнного языка, Ρ‚Π°ΠΊ ΠΈ спСциализированныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ глобального контСкста, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ часто ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π² Ρ‚Π΅Π½ΠΈ, Π½ΠΎ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ ΠΌΠΎΡ‰Π½Ρ‹ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΠΎΠΌ.

ИспользованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° слоТСния для ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ

Π‘Π°ΠΌΡ‹ΠΉ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятный ΠΈ распространСнный способ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π²Π΅ тСкстовыС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ β€” использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° +. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π½Π°ΠΊΠΎΠΌ Π»ΡŽΠ±ΠΎΠΌΡƒ, ΠΊΡ‚ΠΎ ΠΈΠΌΠ΅Π» Π΄Π΅Π»ΠΎ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, ΠΈ Π² синтаксисС 1Π‘ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ матСматичСскому слоТСнию, Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½Π½Ρ‹Ρ… Π‘Ρ‚Ρ€ΠΎΠΊΠ°.

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

Рассмотрим простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ синтаксис:

Имя = "Иван";

Ѐамилия = "ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²";

// ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ соСдинСниС Ρ‡Π΅Ρ€Π΅Π· плюс

ПолноСИмя = Имя + " " + Ѐамилия;

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(ПолноСИмя); // Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚: Иван ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²

Для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов Π΄Π°Π½Π½Ρ‹Ρ… это Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ, Π½ΠΎ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ тысяч записСй Π² Ρ†ΠΈΠΊΠ»Π΅ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ становится нСэффСктивным.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ + Π½Π΅ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ пустыС строки. Если ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… пуста, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ просто Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ тСкста, Π½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ (Ссли ΠΎΠ½ Π΅ΡΡ‚ΡŒ) останСтся. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ появлСнию Π»ΠΈΡˆΠ½ΠΈΡ… ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΠΈΠ»ΠΈ запятых Π² ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠΌ тСкстС.

πŸ’‘

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ + для соСдинСния 2-3 ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² Π²Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ излишнСй Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° сборщик мусора.

ΠœΠ΅Ρ‚ΠΎΠ΄ Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ() для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами

Когда ΠΏΠ΅Ρ€Π΅Π΄ Π²Π°ΠΌΠΈ стоит Π·Π°Π΄Π°Ρ‡Π° ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π½Π΅ Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π° Ρ†Π΅Π»Ρ‹ΠΉ массив строк, Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ(). Он являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ глобального контСкста ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для эффСктивной Ρ€Π°Π±ΠΎΡ‚Ρ‹ с коллСкциями тСкстовых Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ позволяСт Π·Π°Π΄Π°Ρ‚ΡŒ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ вставлСн ΠΌΠ΅ΠΆΠ΄Ρƒ всСми элСмСнтами массива.

Π“Π»Π°Π²Π½ΠΎΠ΅ прСимущСство Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ() Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π΅Π³ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ читаСмости ΠΊΠΎΠ΄Π°. Π’Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, являСтся Π»ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ элСмСнт послСдним, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ лишний Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π±Π΅Ρ€Π΅Ρ‚ Π½Π° сСбя всю Π»ΠΎΠ³ΠΈΠΊΡƒ формирования ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠΉ строки.

Бинтаксис ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ прост: ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ пСрСдаСтся массив строк, Π° Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ β€” строка-Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ. Если Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ Π½Π΅ Π½ΡƒΠΆΠ΅Π½, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΡƒΡΡ‚ΡƒΡŽ строку "".

ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΠΎΠΊ = Новый Массив;

ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΠΎΠΊ.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π―Π±Π»ΠΎΠΊΠΎ");

ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΠΎΠΊ.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π“Ρ€ΡƒΡˆΠ°");

ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΠΎΠΊ.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π‘Π»ΠΈΠ²Π°");

// БоСдиняСм элСмСнты Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ(ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΠΎΠΊ, ", ");

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚); // Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚: Π―Π±Π»ΠΎΠΊΠΎ, Π“Ρ€ΡƒΡˆΠ°, Π‘Π»ΠΈΠ²Π°

ИспользованиС этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° особСнно Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ списков Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π² внСшниС систСмы ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ списков для интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Код становится ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΌ ΠΈ самодокумСнтируСмым.

πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ соСдинСния строк Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ всСго?
ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ "+"
ΠœΠ΅Ρ‚ΠΎΠ΄ Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ()
ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ запроса
Ѐорматированная строка

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ строки ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹

Для слоТных случаСв, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π΅ просто ΡΠΊΠ»Π΅ΠΈΡ‚ΡŒ тСкст, Π½ΠΎ ΠΈ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ мСста прСдлоТСния с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ чисСл ΠΈΠ»ΠΈ Π΄Π°Ρ‚), Π² 1Π‘ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция Π‘Ρ‚Ρ€Π¨Π°Π±Π»ΠΎΠ½. Π­Ρ‚ΠΎ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ тСкстовыС ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ.

Π’ шаблонС мСста для подстановки Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°ΠΌΠΈ с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°: %1, %2 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ замСняСт эти ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Ρ‹ Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Π­Ρ‚ΠΎ избавляСт ΠΎΡ‚ нСобходимости ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ, дСлая ΠΊΠΎΠ΄ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ формирования слоТного сообщСния:

Π’ΠΎΠ²Π°Ρ€ = "Ноутбук";

Π¦Π΅Π½Π° = 50000;

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ = 2;

Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ = Π‘Ρ‚Ρ€Π¨Π°Π±Π»ΠΎΠ½(

"Π’Ρ‹ Π·Π°ΠΊΠ°Π·Π°Π»ΠΈ %1 Π² количСствС %2 ΡˆΡ‚. Π½Π° сумму %3 Ρ€ΡƒΠ±.",

Π’ΠΎΠ²Π°Ρ€, ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ, Π¦Π΅Π½Π° * ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ

);

Ѐункция Π‘Ρ‚Ρ€Π¨Π°Π±Π»ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ спСцификаторы Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ Π½Π° Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π€ΠΎΡ€ΠΌΠ°Ρ‚(). Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ число ΠΈΠ»ΠΈ Π΄Π°Ρ‚Π°, прямо Π²Π½ΡƒΡ‚Ρ€ΠΈ шаблона, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ послС Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.

Ѐункция НазначСниС ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π§ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ
+ ΠŸΡ€ΠΎΡΡ‚Π°Ρ конкатСнация Низкая Π² Ρ†ΠΈΠΊΠ»Π°Ρ… БрСдняя
Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ() ΠœΠ°ΡΡΠΈΠ²Ρ‹ строк Высокая Высокая
Π‘Ρ‚Ρ€Π¨Π°Π±Π»ΠΎΠ½() Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ БрСдняя ΠžΡ‡Π΅Π½ΡŒ высокая
ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ—Π°ΠΏΡ€ΠΎΡΠ° ДинамичСскиС запросы Высокая БпСцифичная

ИспользованиС шаблонов особСнно рСкомСндуСтся ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ тСкстов для ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ ΠΈΠ»ΠΈ сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, Π³Π΄Π΅ Π²Π°ΠΆΠ½Π° грамматичСская ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ структура прСдлоТСния.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ использовании Π‘Ρ‚Ρ€Π¨Π°Π±Π»ΠΎΠ½ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ количСство ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² шаблонС совпадаСт с количСством ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС систСма выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ выполнСния, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ Π½Π° нСсоотвСтствиС индСксов.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π² Π‘Ρ‚Ρ€Π¨Π°Π±Π»ΠΎΠ½

Π’Π½ΡƒΡ‚Ρ€ΠΈ шаблона ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ %1(Π§Π¦=10.2), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ число с двумя Π·Π½Π°ΠΊΠ°ΠΌΠΈ послС запятой ΠΈ ΠΎΠ±Ρ‰Π΅ΠΉ Π΄Π»ΠΈΠ½ΠΎΠΉ 10 символов. Π­Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ возмоТности Π€ΠΎΡ€ΠΌΠ°Ρ‚() ΠΈ вставки ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

ΠšΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΡ Π² запросах ΠΈ ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»Π΅Π—Π°ΠΏΡ€ΠΎΡΠ°

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ поля ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ тСкстовый прСфикс ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ нСпосрСдствСнно Π½Π° сторонС Π‘Π£Π‘Π”. Π’ языкС запросов 1Π‘ для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ +, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ транслируСтся Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π‘Π£Π‘Π” (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, CONCAT Π² PostgreSQL ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ || Π² Oracle).

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ соСдинСния ΠΏΠΎΠ»Π΅ΠΉ Π² тСкстС запроса:

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

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

"ВЫБРАВЬ

| Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ.Ѐамилия + "" "" + Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ.Имя КАК ЀИО

|Π˜Π—

| Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ КАК Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ";

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Запрос.Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ();

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ "" Π²Π½ΡƒΡ‚Ρ€ΠΈ строки запроса. Π­Ρ‚ΠΎ способ экранирования ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ тСкстового Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π° Π² языкС 1Π‘. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ—Π°ΠΏΡ€ΠΎΡΠ°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для поля ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΠ»ΠΈ конструктор Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

β˜‘οΈ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° запроса Π½Π° ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΡŽ

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

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с NULL ΠΈ пустыми строками

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

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ сбоСв, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ явно ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ значСния ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠ΅ΠΉ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ(). ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ β€” использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘ΠΎΠΊΡ€Π›() ΠΈΠ»ΠΈ Π‘ΠΎΠΊΡ€ΠŸ() Π² сочСтании с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ, Π½ΠΎ это Π½Π΅ всСгда Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ….

БСзопасный шаблон ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ:

Π§Π°ΡΡ‚ΡŒ1 = Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НаимСнованиС;

Π§Π°ΡΡ‚ΡŒ2 = Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.Артикул; // ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Null

Если Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ(Π§Π°ΡΡ‚ΡŒ2) Π’ΠΎΠ³Π΄Π°

Π˜Ρ‚ΠΎΠ³ = Π§Π°ΡΡ‚ΡŒ1 + " (" + Π§Π°ΡΡ‚ΡŒ2 + ")";

Π˜Π½Π°Ρ‡Π΅

Π˜Ρ‚ΠΎΠ³ = Π§Π°ΡΡ‚ΡŒ1;

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

БущСствуСт Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ΅ΠΌ с использованиСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ?(..) (Ρ‚Π΅Ρ€Π½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€) для ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠΉ записи, Π½ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ½ΠΈΠΆΠ°Ρ‚ΡŒ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΠ»Π°Π³Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° сама "Π΄ΠΎΠ΄ΡƒΠΌΠ°Π΅Ρ‚", ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ отсутствиС значСния.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ запросах ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ NULL ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π‘Π£Π‘Π”. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… систСмах конкатСнация с NULL Π΄Π°Π΅Ρ‚ NULL, Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… β€” ΠΎΡˆΠΈΠ±ΠΊΡƒ. ВсСгда провСряйтС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° тСстовой Π±Π°Π·Π΅, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Ρƒ.

πŸ’‘

ВсСгда провСряйтС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π° Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠ΅ΠΉ. Ошибка Ρ‚ΠΈΠΏΠ° "ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ значСниями Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²" являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· самых распространСнных Π² ΠΎΡ‚Ρ‡Π΅Ρ‚Π°Ρ… ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… 1Π‘.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ массовом соСдинСнии

Когда Ρ€Π΅Ρ‡ΡŒ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ΅ справочника Π² тСкстовый Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ³ΠΎ XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, вопрос ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ встаСт Ρ€Π΅Π±Ρ€ΠΎΠΌ. ΠœΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° + Π² Ρ†ΠΈΠΊΠ»Π΅ являСтся Π°Π½Ρ‚ΠΈΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠΌ.

Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ строки Π² 1Π‘ нСизмСняСмы. КаТдая опСрация слоТСния создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ строки Π² памяти, копируя Ρ‚ΡƒΠ΄Π° содСрТимоС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… строк. ΠŸΡ€ΠΈ тысячах ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½ΠΎΠΉ слоТности Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° O(n^2) ΠΈ Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠΌΡƒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΡŽ памяти, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ частыС Π²Ρ‹Π·ΠΎΠ²Ρ‹ сборщика мусора ΠΈ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ систСмы.

Для Ρ‚Π°ΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΉ записи, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π—Π°ΠΏΠΈΡΡŒΠ’Π΅ΠΊΡΡ‚Π° ΠΈΠ»ΠΈ Π—Π°ΠΏΠΈΡΡŒXML, Π»ΠΈΠ±ΠΎ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² массивС ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ() ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π² ΠΊΠΎΠ½Ρ†Π΅. Π­Ρ‚ΠΎ обСспСчиваСт Π»ΠΈΠ½Π΅ΠΉΠ½ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ O(n) ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ использованиС рСсурсов.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° для Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ списка:

ΠœΠ°ΡΡΠΈΠ²Π”Π»ΡΠ’Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ = Новый Массив;

Для КаТдого Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из БправочникБсылки Π¦ΠΈΠΊΠ»

ΠœΠ°ΡΡΠΈΠ²Π”Π»ΡΠ’Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.НаимСнованиС);

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

// Одно дСйствиС вмСсто тысяч ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ слоТСния

ВСкстЀайла = Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ(ΠœΠ°ΡΡΠΈΠ²Π”Π»ΡΠ’Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ, Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.ПБ);

ИспользованиС Π—Π°ΠΏΠΈΡΡŒΠ’Π΅ΠΊΡΡ‚Π° Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ эффСктивно, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ нСпосрСдствСнно Π² ΠΏΠΎΡ‚ΠΎΠΊ Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ накоплСния Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, Ρ‡Ρ‚ΠΎ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ для ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ².

ΠŸΠΎΡ‡Π΅ΠΌΡƒ плюс Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ?

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ склСиваСтС Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ ΠΈΠ· 1000 звСньСв. Если Π²Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π±Π΅Ρ€Π΅Ρ‚Π΅ всю Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ Ρ†Π΅ΠΏΡŒ ΠΈ ΠΏΡ€ΠΈΠΊΠ»Π΅ΠΈΠ²Π°Π΅Ρ‚Π΅ ΠΊ Π½Π΅ΠΉ Π½ΠΎΠ²ΠΎΠ΅ Π·Π²Π΅Π½ΠΎ, Π²Π°ΠΌ приходится Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² Ρ€ΡƒΠΊΠ°Ρ… всё большС вСса. Массив ΠΆΠ΅ позволяСт просто ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ всС звСнья Π² ΠΊΠΎΡ€ΠΎΠ±ΠΊΡƒ, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΡΠΊΠ»Π΅ΠΈΡ‚ΡŒ ΠΈΡ… ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.

МоТно Π»ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ строки Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΎΠΊ Π² 1Π‘?

Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ всС строки хранятся Π² ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ (Unicode), поэтому явных ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ ΠΏΡ€ΠΈ слоТСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ записи Π² Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ с внСшними систСмами, Π³Π΄Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ (UTF-8, Windows-1251) Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… записи.

Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ пСрСнос строки ΠΏΡ€ΠΈ соСдинСнии?

Для добавлСния пСрСноса строки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠΈΡΡ‚Π΅ΠΌΠ½ΡƒΡŽ константу Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.ПБ (символ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки) ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.Π’Πš + Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.ПБ для ΠΏΠΎΠ»Π½ΠΎΠΉ эмуляции наТатия Enter. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π‘Ρ‚Ρ€1 + Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.ПБ + Π‘Ρ‚Ρ€2.

Π§Ρ‚ΠΎ быстрСС: Π‘Ρ‚Ρ€Π¨Π°Π±Π»ΠΎΠ½ ΠΈΠ»ΠΈ конкатСнация плюсом?

Для простых случаСв (2-3 ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅) Ρ€Π°Π·Π½ΠΈΡ†Π° Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½Π°. Для слоТных строк с мноТСством ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π‘Ρ‚Ρ€Π¨Π°Π±Π»ΠΎΠ½ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΏΠΎ читаСмости. Π’ Ρ†ΠΈΠΊΠ»Π°Ρ… Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, Ρ‚Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ() ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΡƒΡŽ запись.

Как ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ строку ΠΈ число Π±Π΅Π· явного прСобразования?

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ + выполняСт нСявноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ². Однако для контроля Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° числа (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, количСства Π·Π½Π°ΠΊΠΎΠ² послС запятой) Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π‘Ρ‚Ρ€Π¨Π°Π±Π»ΠΎΠ½ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π‘Ρ‚Ρ€ΠΎΠΊΠ°() с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ форматирования.

Π•ΡΡ‚ΡŒ Π»ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π»ΠΈΠ½Ρƒ строки Π² 1Π‘?

Π”Π°, максимальная Π΄Π»ΠΈΠ½Π° строки Π² 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8 ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° 2 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚Π°ΠΌΠΈ (тСхничСскоС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…). На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½Π΅Ρ‚Π΅ΡΡŒ с Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти Π³ΠΎΡ€Π°Π·Π΄ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅ этого ΠΏΡ€Π΅Π΄Π΅Π»Π°.