no supertype for types UInt8, UUID because some of them are numbers and some of them are not
Вот такая ошибка возникает при приведении UUID к String: ```CAST(if(uid IS NULL, 0, uid) AS String)```, coalesce тоже не срабатывает
у вас видимо uid - не UInt8
uid, как и написано выше, это тип UUID
вместо нуля поставьте нулевой uuid
if(uid IS NULL, '0', toString(uid)) тоже вызывает ошибку?
Какой корректный синтаксис в этом случае? CAST(‘0000-00…’ AS UUID)?
Вновь Cannot convert NULL value to non-Nullable type Возможно, IS NULL проверку поле некорректно проходит при типе данных UUID
Там есть функция isNull() попробуйте ее
а такой пример нормально отрабатывает? select *, coalesce(toString(uid), '0') from values('id UInt8', 1, 2, 3) as t1 left join values('id UInt8, uid UUID', (1, '00000000-0000-0000-0000-000000000000'), (2, '61f0c404-5cb3-11e7-907b-a6006ad3dba0')) as t2 on t1.id = t2.id settings join_use_nulls = 1;
а просто assumeNotNull(uid)?
toUUID('00000000-0000-0000-0000-000000000000')
у меня нормально отработало
у меня coalesce(toString(uid), '0') нормально отработало. возможно проблемы были на старых версиях. у меня 21.2.4.6
тоже тестил на новой и самое короткое, конечно, https://t.me/clickhouse_ru/214106
да, assumeNotNull - вообще огонь
Обсуждают сегодня