问题标签 [varchar]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
47264 浏览

mysql - MySQL 的最佳 varchar 大小是多少?

MySQL如何存储varchar字段?我可以假设以下模式代表合理的存储大小:

1,2,4,8,16,32,64,128,255(最大)

通过示例进行澄清。假设我有一个 20 个字符的 varchar 字段。MySQL在创建这个字段时,基本上保留32个字节的空间(不确定它们是否是字节)但只允许输入20个?

我想我担心为一个巨大的表优化磁盘空间。

0 投票
5 回答
171096 浏览

oracle - oracle varchar 转数字

如何将 oracle varchar 值转换为数字

例如

我想测试 exception_value 列的值

0 投票
5 回答
121199 浏览

database - PostgreSQL 中的 CHARACTER VARYING 和 VARCHAR 有什么区别?

约翰在我使用CHARACTER VARYING的地方使用VARCHAR. 我是初学者,他是专家。这表明我有一些我不知道的东西。

PostgreSQL 中的 CHARACTER VARYING 和 VARCHAR 有什么区别?

0 投票
10 回答
158438 浏览

database - 我看到 VARCHAR(255) 经常使用(而不是另一个长度)有充分的理由吗?

在多个课程、书籍和工作中,我看到定义为 VARCHAR(255) 的文本字段是“短”文本的默认值。除了作为一个不错的整数之外,是否有任何充分的理由经常选择 255 的长度?它是否是过去某个时候有充分理由的坚持(无论它是否适用于今天)?

当然,我意识到,如果您以某种方式知道字符串的最大长度,则更严格的限制会更理想。但是,如果您使用的 VARCHAR(255) 可能表明您不知道最大长度,那么它只是一个“短”字符串。


注意:我发现了这个问题(varchar(255) v tinyblob v tinytext),它说 VARCHAR( n ) 对于n <=255需要n +1 字节的存储空间,对于n >255 需要n +2 字节的存储空间。这是唯一的原因吗?这似乎有点武断,因为与 VARCHAR(256) 相比,您只会节省两个字节,并且您可以通过将其声明为 VARCHAR(253) 来轻松保存另外两个字节。

0 投票
3 回答
5414 浏览

sql - VARCHARS:2、4、8、16 等?还是 1、3、7、15 等?

我看到一直使用 VARCHAR(255) 而不是 VARCHAR(256),但我也看到使用 VARCHAR(16) 而不是 VARCHAR(15)。这对我来说似乎不一致。如果使用额外的字节来存储 VARCHAR 的长度,那么这条规则是否也适用于较小的长度,例如 2、4、8 为 1、3、7?

还是我完全错过了什么?

换句话说,如果我有一个我知道永远不会超过 12 的数字,我应该继续使用 VARCHAR(15) 还是 VARCHAR(16) 来代替?因为它使用与 VARCHAR(12) 相同的空间量?如果是这样,我该使用哪一个?15 还是 16?当我接近 256 时,这条规则会发生变化吗?

根据项目,我同时使用 MySQL 和 SQL。

0 投票
9 回答
29559 浏览

database-design - 为 (n)varchar 列选择什么大小?

关于 TDWTF 的稍微激烈的讨论中,出现了一个关于数据库中 varchar 列的大小的问题。

例如,取一个包含人名的字段(只有名字,没有姓氏)。很容易看出它不会很长。大多数人的名字少于 10 个字符,很少有人超过 20 个字符。如果您将列设为 varchar(50),它肯定会包含您遇到的所有名字。

然而,对于大多数 DBMS,无论您制作 varchar(50) 还是 varchar(255),大小或速度都没有区别。

那么,为什么人们要尽可能地缩小他们的列呢?我知道在某些情况下,您可能确实想限制字符串的长度,但大多数情况下并非如此。只有在极少数情况下姓名极长的人的情况下,更大的边距才是有益的。


补充:人们想要参考关于“大小或速度没有差异”的声明。好的。他们来了:

对于 MSSQL:http://msdn.microsoft.com/en-us/library/ms176089.aspx

存储大小是输入数据的实际长度 + 2 个字节。

对于 MySQL:http://dev.mysql.com/doc/refman/5.1/en/storage-requirements.html

如果列值需要 0 – 255 个字节,则 L + 1 个字节,如果值可能需要超过 255 个字节,则 L + 2 个字节

我找不到 Oracle 的文档,也没有使用过其他 DBMS。但我没有理由相信那里有什么不同。

0 投票
6 回答
78582 浏览

mysql - MySQL:为什么使用 VARCHAR(20) 而不是 VARCHAR(255)?

可能重复:
对所有基于文本的字段使用通用 varchar(255) 是否有缺点?

在 MYSQL 中,您可以为 VARCHAR 字段类型选择长度。可能的值为 1-255。

但是,如果使用最大值的 VARCHAR(255) 而不是 VARCHAR(20),它的优势是什么?据我所知,条目的大小仅取决于插入字符串的实际长度。

大小(字节)= 长度+1

因此,如果您在 VARCHAR(255) 字段中有单词“Example”,它将有 8 个字节。如果将它放在 VARCHAR(20) 字段中,它也将有 8 个字节。有什么不同?

我希望你能帮助我。提前致谢!

0 投票
2 回答
5027 浏览

sql - [My]SQL VARCHAR 大小和空终止

免责声明:总的来说,我对 SQL 和数据库非常陌生。


我需要创建一个最多可存储 32 个字符的文本数据的字段。“” 是否VARCHAR(32)意味着我的数据正好有 32 个字符?我是否需要为空终止保留一个额外的字符?

我进行了一个简单的测试,似乎这是一个所见即所得的缓冲区。但是,我想从真正知道自己在做什么的人那里得到具体的答案。


我有 C[++] 背景,所以这个问题在我脑海中敲响了警钟。

0 投票
2 回答
2838 浏览

sql - 确定 nvarchar 列中的 varchar 内容

我有一堆 NVARCHAR 列,我怀疑它们在 VARCHAR 列中包含完全可存储的数据。但是我不能只是将列的类型更改为 VARCHAR 并希望最好,我需要进行某种检查。

我想进行转换,因为数据是静态的(将来不会更改)并且列已编入索引,并且与实际(nvarchar)索引相比,将受益于较小的(varchar)索引。

如果我简单地说

那么我不会收到错误或警告。Unicode 数据将被截断/丢失。

我该如何检查?

0 投票
3 回答
8836 浏览

mysql - MySQL 表只有一个 varchar 作为外键

我有一个带有单个唯一 VARCHAR(512) 字段的表。我想让另一个表保存对第一个表的外键引用。两个表都使用 InnoDB。如果我向第二个表添加一个 VARCHAR(512) 键并在其上添加一个外键约束,那么 512 字节长的数据会被保存两次吗?

如果是这样,有没有办法只保留对索引的引用而不是对 varchar 本身的引用?

简而言之,我的问题是,在 InnoDB 中是否有一种有效的方法来保存长 VARCHAR 字段的外键?

非常感谢,

亚尼夫