#sql #vertica
#sql #vertica
Вопрос:
select
distinct upper(trim(LEFT(col_name::varchar, 100))) as col_name from mytable;
Каким-то образом это добавило дополнительную длину, поскольку LEFT(col_name::varchar, 100) возвращает 100 символов слева.
И я получаю ошибку ниже при вставке в другую таблицу
ОШИБКА: строка из 101 октета слишком длинная для типа Varchar(100), если кто-нибудь может помочь мне понять это поведение
Ответ №1:
Функция LEFT(string, N) возвращает N символов с левой стороны строки.
Однако эти N символов могут занимать более N байт (октетов), например, символы с ударением:
dbadmin=> select left('é', 1);
left
------
é
dbadmin=> select octet_length(left('é', 1));
octet_length
--------------
2