Приведение к типу BOOLEAN
Тип BOOLEAN представляет значения true или false и допускает только два состояния: true и false.
Из типа String
Ранее строки вида '1.11' можно было привести к значению 'true' логического типа. Начиная с версии 4.0 они преобразуются в null (в нестрогом режиме) или вызывают ошибку (в строгом режиме). Ранее значения вида 'on', 'off', 'yes', 'no' преобразовывались в null. Начиная с версии 4.0 их можно преобразовать в соответствующие логические значения.
Строгий режим
Определение в нотации BNF
<boolean> ::= <whitespace>* <bool_like> <whitespace>*
<bool_like> ::= "0" | "1" | "t" | "T" | "f" | "F" | <yes> | <no> | <on> | <off> | <true> | <false>
<yes> ::= ("y" | "Y") ("e" | "E") ("s" | "S")
<no> ::= ("n" | "N") ("o" | "O")
<on> ::= ("o" | "O") ("n" | "N")
<off> ::= ("o" | "O") ("f" | "F") ("f" | "F")
<true> ::= ("t" | "T") ("r" | "R") ("u" | "U") ("e" | "E")
<false> ::= ("f" | "F") ("a" | "A") ("l" | "L") ("s" | "S") ("e" | "E")
<whitespace> ::= " " | "\t" | "\n" | "\r" | "\f" | "\v"
Описание правил
Логические значения могут иметь следующие формы: 0, 1, yes, no, on, off, true, false; регистр символов не учитывается. Кроме того, перед логическим значением и после него может быть любое количество пробельных символов (включая пробелы, табуляцию, переводы строк и т. д.).
Если формат не соответствует этим правилам, выдаётся ошибка.
Примеры
| Строка | Результат приведения к bool | Комментарий |
|---|---|---|
| "true" | true | |
| "false" | false | |
| " \t\r\n\f\v true \t\r\n\f\v" | true | С пробельными символами в начале и конце |
| "1.1" | Error | Неверный формат |
| "YeS" | true | Регистр не учитывается |
| '+0' | Error | Неверный формат |
Нестрогий режим
Определение в нотации BNF
<boolean> ::= <whitespace>* <bool_like> <whitespace>*
<bool_like> ::= "0" | "1" | "t" | "T" | "f" | "F" | <yes> | <no> | <on> | <off> | <true> | <false>
<yes> ::= ("y" | "Y") ("e" | "E") ("s" | "S")
<no> ::= ("n" | "N") ("o" | "O")
<on> ::= ("o" | "O") ("n" | "N")
<off> ::= ("o" | "O") ("f" | "F") ("f" | "F")
<true> ::= ("t" | "T") ("r" | "R") ("u" | "U") ("e" | "E")
<false> ::= ("f" | "F") ("a" | "A") ("l" | "L") ("s" | "S") ("e" | "E")
<whitespace> ::= " " | "\t" | "\n" | "\r" | "\f" | "\v"
Описание правил
Логические значения могут иметь следующие формы: 0, 1, yes, no, on, off, true, false; регистр символов не учитывается. Кроме того, перед логическим значением и после него может быть любое количество пробельных символов (включая пробелы, табуляцию, переводы строк и т. д.).
Если формат не соответствует этим правилам, возвращается null.
Примеры
| Строка | Результат приведения к bool | Комментарий |
|---|---|---|
| "true" | true | |
| "false" | false | |
| " \t\r\n\f\v true \t\r\n\f\v" | true | С пробельными символами в начале и конце |
| "1.1" | null | Неверный формат |
| "YeS" | true | Регистр не учитывается |
| '+0' | null | Неверный формат |
Из числовых типов
Ранее нечисловые типы, такие как date/datetime, можно было преобразовывать в логический тип. Начиная с версии 4.0 это не поддерживается.
Строгий режим
Описание правил
Для числовых типов (int/double/decimal) ненулевые значения считаются true.
Положительный и отрицательный нули в числах с плавающей точкой преобразуются в false.
Примеры
| Числовой тип | Результат приведения к bool | Комментарий |
|---|---|---|
| 121231 | true | |
| 0 | false | |
| +0.0 | false | Положительный ноль в числах с плавающей точкой |
| -0.0 | false | Отрицательный ноль в числах с плавающей точкой |
| -1 | true | |
| 1 | true |
Нестрогий режим
Описание правил
Для числовых типов (int/double/decimal) ненулевые значения считаются true.
Положительный и отрицательный нули в числах с плавающей точкой преобразуются в false.
Примеры
| Числовой тип | Результат приведения к bool | Комментарий |
|---|---|---|
| 121231 | true | |
| 0 | false | |
| +0.0 | false | Положительный ноль в числах с плавающей точкой |
| -0.0 | false | Отрицательный ноль в числах с плавающей точкой |
| -1 | true | |
| 1 | true |