Π Π°Π±ΠΎΡ‚Π° с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ часто сталкиваСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ с ошибками Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ абстрактными Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΈΡ… возникновСния Π² ΠΊΠΎΠ΄Π΅. Одной ΠΈΠ· самых распространСнных ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ являСтся сообщСниС «НСсовмСстимыС Ρ‚ΠΈΠΏΡ‹Β», Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰Π΅Π΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ систСмы нСявно ΠΈΠ»ΠΈ явно ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Число. Π­Ρ‚Π° ошибка Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ запросов, ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ расчСты, трСбуя Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°.

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

Часто ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° кроСтся Π½Π΅ Π² самом ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Π² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ ΠΈΠ· Π²Π½Π΅ΡˆΠ½ΠΈΡ… источников ΠΈΠ»ΠΈ вводятся ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ с Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°. НапримСр, ΠΏΠΎΠ»Π΅, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ для хранСния количСства Ρ‚ΠΎΠ²Π°Ρ€Π°, ΠΌΠΎΠΆΠ΅Ρ‚ случайно ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ тСкстовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«Π½Π΅Ρ‚ Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈΒ» ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Ρ€ΠΊ Β«-Β». Π’Π°ΠΊΠΈΠ΅ ситуации Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ исправлСния ΠΊΠΎΠ΄Π°, Π½ΠΎ ΠΈ настройки Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ интСрфСйса.

ΠŸΡ€ΠΈΡ€ΠΎΠ΄Π° ошибки нСсовмСстимости Ρ‚ΠΈΠΏΠΎΠ²

Π’ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ строго ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ: Число, Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Π”Π°Ρ‚Π°, Π‘ΡƒΠ»Π΅Π²ΠΎ, Бсылка, Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. Ошибка «НСсовмСстимыС Ρ‚ΠΈΠΏΡ‹Β» Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Π΄Π²ΠΈΠΆΠΎΠΊ языка 1Π‘ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ автоматичСски привСсти ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ Π² контСкстС выполняСмой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. НапримСр, ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ число 100 ΠΈ строку "50" ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ сбою, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ систСма Π½Π΅ Π·Π½Π°Π΅Ρ‚, ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π»ΠΈ строку числом ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΡŽ.

ОсобСнно часто эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° проявляСтся ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ДинамичСскими списками ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· Π²Π½Π΅ΡˆΠ½ΠΈΡ… источников Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ тСкстовыС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ»ΠΈ Π²Π΅Π±-сСрвисы. Если внСшний сСрвис Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ число Π² Π²ΠΈΠ΄Π΅ строки с ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, " 1 200 "), прямоС присваиваниС этого значСния числовой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ ΠΈ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: НС стоит ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° автоматичСскоС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π² слоТных вычислСниях. Π―Π²Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌ ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ ΠΎΡ‚ скрытых ошибок ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ структуры ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ….

Рассмотрим Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ сцСнарий, ΠΊΠΎΠ³Π΄Π° ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ значСния. Если Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· строк Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠΎΠ»Π΅ Β«ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΒ» содСрТит Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ НСопрСдСлСно (Null), Π° Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊ аккумулятору суммы, систСма выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ. ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΡΡ‚ΡŒ значСния являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ этапом написания качСствСнного ΠΊΠΎΠ΄Π°.

πŸ“Š Π‘ ΠΊΠ°ΠΊΠΈΠΌ Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ Ρ‡Π°Ρ‰Π΅ всСго ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π΅Ρ‚Π΅ΡΡŒ ΠΏΡ€ΠΈ ошибкС привСдСния ΠΊ Числу?
Π‘Ρ‚Ρ€ΠΎΠΊΠ° с ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ НСопрСдСлСно
Π‘ΡƒΠ»Π΅Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Π˜ΡΡ‚ΠΈΠ½Π°/Π›ΠΎΠΆΡŒ)
Бсылка Π½Π° справочник

ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Число() для ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ инструмСнтом Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ являСтся встроСнная функция Число(). Она ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ любого Ρ‚ΠΈΠΏΠ° ΠΈ пытаСтся ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² числовой Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. Если ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, строка содСрТит Π±ΡƒΠΊΠ²Ρ‹), функция Π²Π΅Ρ€Π½Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0 ΠΈΠ»ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² зависимости ΠΎΡ‚ контСкста ΠΈ настроСк ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, поэтому Π΅Ρ‘ использованиС Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ остороТности.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со строками, содСрТащими числовыС Π΄Π°Π½Π½Ρ‹Π΅, функция Число() автоматичСски ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Π΅Π΄ΡƒΡ‰ΠΈΠ΅ ΠΈ Π·Π°ΠΌΡ‹ΠΊΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹. Однако, Ссли Π² строкС ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ Π³Ρ€ΡƒΠΏΠΏ разрядов (ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ числа, ΠΊΠ°ΠΊ Π² "1 000"), стандартная функция ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ() для удалСния Π»ΠΈΡˆΠ½ΠΈΡ… символов ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ.

Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ° = " 1 250,50 ";

// УдаляСм ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ парсингу

ΠžΡ‡ΠΈΡ‰Π΅Π½Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ° = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°, " ", "");

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Число(ΠžΡ‡ΠΈΡ‰Π΅Π½Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°);

// Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π΅Π½ 1250.50

Π’ русской Π»ΠΎΠΊΠ°Π»ΠΈ 1Π‘ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ являСтся запятая. Если Π΄Π°Π½Π½Ρ‹Π΅ приходят ΠΈΠ· CSV-Ρ„Π°ΠΉΠ»Π° с Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π² качСствС раздСлитСля, прямоС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΎΡ‚ΡΠ΅Ρ‡Π΅Π½ΠΈΡŽ Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части ΠΈΠ»ΠΈ ошибкС. НСобходимо ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ Π½Π° Π·Π°ΠΏΡΡ‚ΡƒΡŽ.

πŸ’‘

ΠŸΠ΅Ρ€Π΅Π΄ массовым ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Excel ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ€Π΅Π³ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ настройки Ρ„Π°ΠΉΠ»Π°. Часто числа ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ с Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅ 1Π‘ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΊ Ρ‚ΠΈΠΏΡƒ Число.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ НСопрСдСлСно ΠΈ ΠŸΡƒΡΡ‚Ρ‹Ρ… строк

Одной ΠΈΠ· самых ΠΊΠΎΠ²Π°Ρ€Π½Ρ‹Ρ… ситуаций являСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ значСния НСопрСдСлСно (Null) Π² полях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ числовыми. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Число() ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ нСпрСдсказуСмому повСдСнию Π² старых вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠ»ΠΈ ΠΊ явной ошибкС Π² Π½ΠΎΠ²Ρ‹Ρ…. БСзопаснСС всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.

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

  • πŸ›‘ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Null: ВсСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ условиС Если Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) Π’ΠΎΠ³Π΄Π° ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΎΠΉ матСматичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.
  • πŸ”„ Π—Π°ΠΌΠ΅Π½Π° Π½Π° ноль: Если ΠΏΠΎΠ»Π΅ пустоС, Π»ΠΎΠ³ΠΈΡ‡Π½Π΅Π΅ всСго ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сумма Π½Π΅ искаТалась.
  • πŸ“ Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅: Π’ критичСских процСссах стоит Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΊΡ‚ получСния пустого значСния Π² ΠΆΡƒΡ€Π½Π°Π» рСгистрации для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ бСзопасного получСния числа ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ источника Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ выполнится Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Ρ… Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Ѐункция БСзопасноСЧисло(Π—Π½Π°Ρ‡ Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ)

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

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Число(Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ);

Π˜Π½Π°Ρ‡Π΅

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ 0;

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

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ΠšΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΡ логичСских ΠΈ тСкстовых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

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

Π‘ΠΎΠ»Π΅Π΅ слоТная ситуация Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ с тСкстовыми значСниями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ числа словами ΠΈΠ»ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами. НапримСр, Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ Β«ΠŸΡ€ΠΎΡ†Π΅Π½Ρ‚ скидки» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠ³ ввСсти Π·Π½Π°ΠΊ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π° Β«%Β» ΠΈΠ»ΠΈ слово Β«Π½Π΅Ρ‚Β». Ѐункция Число() Π½Π΅ смоТСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ строки Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈ Π²Π΅Ρ€Π½Π΅Ρ‚ 0, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ логичСски Π½Π΅Π²Π΅Ρ€Π½ΠΎ для бизнСс-процСсса.

Π’Ρ…ΠΎΠ΄Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Число() РСкомСндация
Π˜ΡΡ‚ΠΈΠ½Π° Π‘ΡƒΠ»Π΅Π²ΠΎ 1 Допустимо
"100" Π‘Ρ‚Ρ€ΠΎΠΊΠ° 100 Допустимо
"100 Ρ€ΡƒΠ±." Π‘Ρ‚Ρ€ΠΎΠΊΠ° 0 ВрСбуСтся очистка
НСопрСдСлСно Null 0 (ΠΈΠ»ΠΈ ошибка) ВрСбуСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°

Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкстов с Π΅Π΄ΠΈΠ½ΠΈΡ†Π°ΠΌΠΈ измСрСния ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ рСгулярныС выраТСния ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π·Π°ΠΌΠ΅Π½Ρƒ символов. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС Π½Π΅Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π΅ символы, ΠΊΡ€ΠΎΠΌΠ΅ минуса ΠΈ запятой, ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠ°. Π­Ρ‚ΠΎ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ очистки «грязных» Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ Π² рСгистры.

Как ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ строку "12,5 ΠΊΠ³"? Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ

Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, "ΠΊΠ³", ""), " ", ""). Π—Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Число().

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π² запросах 1Π‘

Π’ языкС запросов 1Π‘ ситуация с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ отличаСтся ΠΎΡ‚ встроСнного языка. Π—Π΄Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция Π•Π‘Π’Π¬NULL() для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ пустых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ явноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ КАК. Если Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅ справочника ΠΊΠ°ΠΊ число, систСма ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π΄Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π½Π° этапС компиляции запроса, Ссли Ρ‚ΠΈΠΏΡ‹ Π½Π΅ совмСстимы.

Частая ошибка β€” ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… записях ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ строкой (ΠΈΠ·-Π·Π° объСдинСния Ρ‚Π°Π±Π»ΠΈΡ† с Ρ€Π°Π·Π½ΠΎΠΉ структурой). Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π§Π˜Π‘Π›Πž() прямо Π² тСкстС запроса. Π­Ρ‚ΠΎ позволяСт привСсти Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΌΡƒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ Π΅Ρ‰Π΅ Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ запросах функция Π§Π˜Π‘Π›Πž() Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π° с Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ числовыми полями. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Π΅Ρ‘ использования Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°Ρ…, Ссли Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ написания запроса с ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠΎΠ² выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π΅ ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ число, Π° пустыС значСния Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π½Π° ноль.

ВЫБРАВЬ

Π”ΠžΠšΠ£ΠœΠ•ΠΠ’.Бсылка,

Π•Π‘Π’Π¬NULL(Π§Π˜Π‘Π›Πž(Π”ΠžΠšΠ£ΠœΠ•ΠΠ’.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ), 0) КАК ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠ§ΠΈΡΠ»ΠΎ

Π˜Π—

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.РСализацияВоваровУслуг КАК Π”ΠžΠšΠ£ΠœΠ•ΠΠ’

ИспользованиС Π•Π‘Π’Π¬NULL Π² связкС с Π§Π˜Π‘Π›Πž являСтся стандартом бСзопасного программирования Π² 1Π‘. Π­Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΌ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΎΡ‚Ρ‡Π΅Ρ‚ сформируСтся Π±Π΅Π· ошибок выполнСния, показывая Π½ΡƒΠ»ΠΈ вмСсто сбоСв.

Диагностика ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

Когда ошибка «НСсовмСстимыС Ρ‚ΠΈΠΏΡ‹Β» Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π² слоТной ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ шагом Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡ‚Π°Ρ‚ΡŒ диагностика. ВстроСнный ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ 1Π‘ позволяСт ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ выполнСния. НавСдитС курсор Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ Β«ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π½Π΅ содСрТит Π»ΠΈ ΠΎΠ½Π° Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

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

  • πŸ” Π’ΠΈΠΏΠ—Π½Ρ‡(): Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ для Π²Ρ‹Π²ΠΎΠ΄Π° Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² консоль ΠΈΠ»ΠΈ Π»ΠΎΠ³.
  • πŸ“Š Анализ Π»ΠΎΠ³ΠΎΠ²: Π˜Ρ‰ΠΈΡ‚Π΅ записи с ошибкой привСдСния Ρ‚ΠΈΠΏΠ° нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ сбоСм.
  • πŸ§ͺ ВСстовыС Π΄Π°Π½Π½Ρ‹Π΅: ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ воспроизвСсти ΠΎΡˆΠΈΠ±ΠΊΡƒ Π½Π° минимальном Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ… с Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌΠΈ значСниями.

Если Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ мСняСтся динамичСски Π² Ρ†ΠΈΠΊΠ»Π΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² структурС ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΡ€ΠΈ создании присвоСны строгиС Ρ‚ΠΈΠΏΡ‹, Π° Π½Π΅ Ρ‚ΠΈΠΏ Β«Π‘Ρ‚Ρ€ΠΎΠΊΠ°Β» с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ΠΌ чисСл.

πŸ’‘

ИспользованиС строгой Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ Π’Π°Π±Π»ΠΈΡ†Ρ‹ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π° этапС ΠΈΡ… создания ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 90% ошибок нСсовмСстимости Ρ‚ΠΈΠΏΠΎΠ² ΠΏΡ€ΠΈ дальнСйшСй ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€ΠΎΡ„ΠΈΠ»Π°ΠΊΡ‚ΠΈΠΊΠ° ошибок ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅

Π›ΡƒΡ‡ΡˆΠΈΠΉ способ Π±ΠΎΡ€ΡŒΠ±Ρ‹ с ошибками Ρ‚ΠΈΠΏΠΎΠ² β€” ΠΈΡ… ΠΏΡ€ΠΎΡ„ΠΈΠ»Π°ΠΊΡ‚ΠΈΠΊΠ° Π½Π° этапС проСктирования ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Ρ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ спСциализированныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… для Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ΠΎΠ²: Ссли ΠΏΠΎΠ»Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΈΠΏ Число с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ, Π° Π½Π΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΡƒΡŽ Π‘Ρ‚Ρ€ΠΎΠΊΡƒ. Π­Ρ‚ΠΎ заставит систСму ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ„ΠΎΡ€ΠΌΡ‹.

ΠŸΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ с внСшними систСмами всСгда создавайтС ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Π±ΡƒΡ„Π΅Ρ€. Π—Π°Π³Ρ€ΡƒΠΆΠ°ΠΉΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ сначала Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ со строковыми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅ очистку ΠΈ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Ρ‚Π΅ΠΌ пСрСноситС ΠΎΡ‡ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ значСния Π² основныС рСгистры ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ «грязныС» Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ поиск ошибок.

РСгулярный Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΊΠΎΠ΄Π° ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… конструкций привСдСния Ρ‚ΠΈΠΏΠΎΠ² Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ систСму Π² Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎΠΌ состоянии. Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ стоит Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ Π²Π·Π°ΠΌΠ΅Π½ старых «костылСй».

ΠŸΠΎΡ‡Π΅ΠΌΡƒ функция Число() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 0 вмСсто ошибки?

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… контСкстах выполнСния, особСнно Π² старых вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠ»ΠΈ Π² запросах, функция Число() ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ 0 ΠΏΡ€ΠΈ нСвозмоТности прСобразования, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ всСго запроса. Однако Π²ΠΎ встроСнном языкС ΠΏΡ€ΠΈ строгих настройках это ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

Как ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ строку "1.200" (с Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ) Π² число?

НСобходимо ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ Π½Π° Π·Π°ΠΏΡΡ‚ΡƒΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, ".", ","), ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Число(). Π˜Π½Π°Ρ‡Π΅ дробная Ρ‡Π°ΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ потСряна ΠΈΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка.

МоТно Π»ΠΈ ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Число ΠΈ Π‘Ρ‚Ρ€ΠΎΠΊΡƒ Π² 1Π‘?

НСт, прямоС слоТСниС Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π‘Ρ‚Ρ€ΠΎΠΊΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ привСсти ΠΊ Ρ‚ΠΈΠΏΡƒ Число с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Число() ΠΈΠ»ΠΈ явно ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Π² числовом ΠΏΠΎΠ»Π΅ справочника хранится тСкст?

Π­Ρ‚ΠΎ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ структуры ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…. НСобходимо ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π° Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π΅ Π½Π° «Число», провСсти ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ обновлСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ записи Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈΠ»ΠΈ скриптом.

ВлияСт Π»ΠΈ Ρ€Π΅Π³ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ настрой ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Число()?

Π”Π°, функция Число() ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части, установлСнный Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Для кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠΉ совмСстимости Π»ΡƒΡ‡ΡˆΠ΅ явно Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ парсинга.