gpt4 book ai didi

utf-8 - Firebird - UTF8 VarChar 大小

转载 作者:行者123 更新时间:2023-12-05 00:09:10 24 4
gpt4 key购买 nike

我正在将 firebird 数据库中的所有 varchar 列更改为 UTF8,但是我不明白 varchar 大小的差异。

例如,charset和collat​​ion设置为空,我们可以将varchar大小设置为255,如果我们将charset和collat​​ion设置为UTF8,当我们将varchar设置为255时,它读取不同的值。

UTF8 中 varchar(255) 的等效 varchar 大小是多少?

最佳答案

VARCHAR(N) 使用 UTF8 字符集字段需要为任何 N 保留足够的空间UTF8 字符。一个这样的字符的长度可能在 1 到 4 之间,所以唯一安全的做法是允许 N每个长度为 4 的字符,这意味着需要有 200 个字节的空间来存储 50 个字符(最坏情况)。

您可以使用 FlameRobin用于查看内部结构的工具。假设你有一张 table

CREATE TABLE "TableÅÄÖåäö"
(
"ColÅÄÖåäö" Varchar(50)
);

在具有默认字符集 UTF8 的数据库中。 (请注意,为此您至少需要 Firebird 2.0。)

系统表存储有关所有关系及其字段的信息。在系统表 RDB$RELATION_FIELDS该字段有一条记录,其中有(例如) RDB$1RDB$FIELD_SOURCE .调查 RDB$FIELDS RDB$1 有一条记录,其值为 RDB$FIELD_LENGTH是 200。

所以要回答你的问题:要有一个 UTF8 列,其中有 255 个字符的空间,你输入它作为 VARCHAR(255) ,但在数据库中它将有 1020 字节的大小。

关于utf-8 - Firebird - UTF8 VarChar 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/822837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com