функции json extract были ещё до появления типа json и работали со строками. при использовании с типом json он переводится в строку. поведение ожидаемое
Что нужно сделать, чтобы из строки '{"b": true}' JSONExtractBool для b отдала 1 а не 0? )
не юзать json extract с типом JSON, который для этого не предназначен
у вас в базе json хранится не в строке. забудьте про строковые функции
Но выбираю из строки
Там уже не строка
на самом деле он приводит к строке, но там уже 1 вместо true. мужек путается сам и путает нас
Пусть будет так. В любом случае там строка преобразована и не совсем соответствует первоначальной строке
Так в чём и вопрос: баг это или фича
такого никто и не гарантировал. в кликхаусе нет типа бул. почему вы вообще надеялись, что потом он приведёт колонку к типу бул, только из-за того что когда-то туда писалась пару строк с типом бул?
Это просто так и должно быть. Посмотрите на то, что отдает select. Там уже преобразован true в 1.
Я??? Я как раз и указал, что при сохранении в поле JSON bool преобразовывается в int
"Если хранится, как JSON, то там уже тип приведен к int во внутреннем представлении"
так я вроде и не вам писал, а морковке...
Значит, промахнулись :)
Обсуждают сегодня