0
我有这样的查询和这样的错误:Vertica的 - 串个字节长度
dbadmin=> update platforms set description = E'ЮлÑ\217 - Ð\237еÑ\200Ñ\203, Ð\221оливиÑ\217, ÐквадоÑ\200 where id = 189;
ERROR 4800: String of 92 octets is too long for type Varchar(80)
当我尝试检查刺痛的长度,我有另外一个值:
dbadmin=> select octet_length(E'ЮлÑ\217 - Ð\237еÑ\200Ñ\203, Ð\221оливиÑ\217, ÐквадоÑ\200');
octet_length
--------------
84
(1 row)
为什么值是不同的?
而我该如何自动切割字符串到特定的八位字节数? 目前我使用Python函数,并返回字符串长度为80(上面的字符串),也有一些sqlalchemy
类:
from sqlalchemy.sql.sqltypes import String
from project import SessionVertica
def process(max_length, value):
literal_processor = String.literal_processor(SessionVertica.bind.dialect)
if literal_processor:
result = unicode(literal_processor(value))
else:
result = unicode(value)
if len(result) >= max_length:
result = result[:max_length - 2] + '\''
return 'E' + result