Попробуйте в запросе не оборачивать в кавычки:Как сделать, чтобы булевые переменные true и false были не текстом(числом?) для tinyint(1) mysql?
сейчас текстом и преобразовывать в 1 и 0 mysql не хочет
Коротко: **в MySQL нет отдельного типа BOOLEAN** — `BOOLEAN/BOOL` это синоним `TINYINT(1)`.
Записывайте **`TRUE`/`FALSE` без кавычек** или **`1`/`0`**. Строки `'true'`/`'false'` — это текст, и в строгом режиме MySQL даёт ошибку *Incorrect integer value*, а без него обе строки превращаются в `0`.
### Как правильно
**SQL‑литералы (без кавычек):**
```sql
INSERT INTO users (is_active) VALUES (TRUE), (FALSE);
UPDATE users SET is_active = TRUE WHERE id = 123;
```
**Числа:**
```sql
INSERT INTO users (is_active) VALUES (1), (0);
```
**Определение колонки:**
```sql
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
is_active BOOLEAN NOT NULL DEFAULT FALSE -- т.е. TINYINT(1) DEFAULT 0
);
```
### Если у вас уже хранятся строки `'true'/'false'` и их нужно разово перевести в `0/1`
```sql
UPDATE your_table
SET is_active = (LOWER(TRIM(is_active_str)) IN ('true','t','yes','y','1'));
```
### Почему сейчас «не хочет»
* Вы, вероятно, передаёте **строки** `'true'/'false'`.
* В **STRICT**‑режиме MySQL это приводит к ошибке (*Incorrect integer value: 'true'*).
* В нестрогом режиме любая ненумерическая строка превращается в `0`.
> Отключать строгий режим ради этого не стоит — лучше отправлять правильный тип.
### Пара замечаний
* Число в `TINYINT(1)` — **не «разрядность булева»**, а историческая ширина вывода. В MySQL 8 она игнорируется; тип остаётся обычным `TINYINT`.
* Тип `BIT(1)` тоже можно использовать, но он возвращает байты (`b'0'`/`b'1'`), работать с ним в приложениях чуть менее удобно. Для логики чаще используют `TINYINT(1)`.
я работаю из действияТакже важно отметить, что все переменные в ZP - это тип string, из-за чего иногда данные нужно конвертировать в другие типы, если работаете из кода.
Покажите, пожалуйста, весь запрос из действия, текстом.я работаю из действия
INSERT INTO test (isTrue) VALUES (@isTrue)Покажите, пожалуйста, весь запрос из действия, текстом.
Здравствуйте,INSERT INTO test (isTrue) VALUES (@isTrue)
в параметре @isTrue переменная {-Variable.isTrue-} в ней прописано True
ну представь, у тебя 10 таких переменныхМожете выполнить такой "кубик IF" {-Variable.isTrue-}==True если Oк то передаем “1”, если нет то “0”.
Соглашусь, что на обычных кубиках данная проверка очень проблематична, если нужно делать много проверок.ну представь, у тебя 10 таких переменных
представь 100 булевых переменных
представь более 100
и все эти проверки тебе прописывать руками
var isTrue = Convert.ToBoolean(project.Variables["isTrue"].Value);
if (isTrue)
project.Variables["tinyint"].Value = "1";
else project.Variables["tinyint"].Value = "0";
я поэтому и написал вам, чтобы решили проблемуна обычных кубиках данная проверка очень проблематична
ок, спасибо, вернёмся к действиямнаписал для вас небольшой C# сниппет
В ZennoPoster все переменные текстовые, поэтому здесь такое преобразование нужно делать вручную.я прошу добавить булевый тип к переменным, а вы мне код для проверок присылаете, обратите на это внимание
Я знаю, что они текстовые, знаю, что доработать будет сложно.В ZennoPoster все переменные текстовые, поэтому здесь такое преобразование нужно делать вручную.
К сожалению, на данный момент это решение, вероятнее всего, находится в очереди на решение, но я не могу обещать, что оно будет реализовано в ближайшее время.Я знаю, что они текстовые, знаю, что доработать будет сложно.
Но это нужно сделать.



