sql中varchar的最大长度

发布于 2024-11-07 14:38:37 字数 155 浏览 0 评论 0原文

你好 Transact-SQL 和 MySQL 中 varchar 的最大长度是多少? 我看到很多人在 TSQL 中使用 varchar(max)。有多长? MySQL 中 varchar(max) 的等效表达式是什么?

谢谢

Hi
What's the maximum length of varchar in Transact-SQL and MySQL?
I see a lot of people use varchar(max) in TSQL. How long is it?
What's the equivalent expression of varchar(max) in MySQL?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

顾冷 2024-11-14 14:38:37

解决此类问题的第一站应该始终是手册。

  • 有关 VARCHAR 的 mySQL 手册位于此处

  • T -有关 VARCHAR 的 SQL 手册位于此处

The first port of call for such questions should always be the manual.

  • the mySQL manual on VARCHAR is here

  • the T-SQL manual on VARCHAR is here

笑咖 2024-11-14 14:38:37

在 MySQL 中,行的最大大小为 64KB (65535)。

我不了解TSQL,所以我做了一些研究:

在 SQL Server 2000 和 SQL Server 7 中,一行的大小不能超过 8000 字节。这意味着 VARBINARY 列只能存储 8000 个字节(假设它是表中唯一的列),VARCHAR 列最多可以存储 8000 个字符,NVARCHAR 列最多可以存储 4000 个字符(每个 unicode 字符 2 个字节)。此限制源于 SQL Server 用于将数据保存到磁盘的 8 KB 内部页面大小。

要在单个列中存储更多数据,您需要使用 TEXT、NTEXT 或 IMAGE 数据类型 (BLOB),这些数据类型存储在 8 KB 数据页的集合中,这些数据页与存储其他数据页的数据页分开。数据在同一个表中。这些数据页以B树结构排列。 BLOB 很难使用和操作。它们不能用作过程或函数中的变量,也不能在 REPLACE、CHARINDEX 或 SUBSTRING 等字符串函数中使用。在大多数情况下,您必须使用 READTEXT、WRITETEXT 和 UPDATETEXT 命令来操作 BLOB。

为了解决这个问题,Microsoft 在 SQL Server 2005 中引入了 VARCHAR(MAX)、NVARCHAR(MAX) 和 VARBINARY(MAX) 数据类型。这些数据类型可以容纳与 BLOB 相同的数据量 (2 GB)它们存储在用于其他数据类型的相同类型的数据页中。当 MAX 数据类型中的数据超过 8 KB 时,将使用溢出页。 SQL Server 2005 自动为页面分配一个溢出指示器,并知道如何像操作其他数据类型一样操作数据行。您可以在存储过程或函数中声明 MAX 数据类型的变量,甚至可以将它们作为变量传递。您还可以在字符串函数中使用它们。

Microsoft 建议在 SQL Server 2005 中使用 MAX 数据类型而不是 BLOB。事实上,在 SQL Server 的未来版本中,BLOB 已被弃用。

http://www.teratrax.com/articles/varchar_max.html

In MySQL, the max size of a row is 64KB (65535).

I don't know about TSQL, so I did some research:

In SQL Server 2000 and SQL Server 7, a row cannot exceed 8000 bytes in size. This means that a VARBINARY column can only store 8000 bytes (assuming it is the only column in a table), a VARCHAR column can store up to 8000 characters and an NVARCHAR column can store up to 4000 characters (2 bytes per unicode character). This limitation stems from the 8 KB internal page size SQL Server uses to save data to disk.

To store more data in a single column, you needed to use the TEXT, NTEXT, or IMAGE data types (BLOBs) which are stored in a collection of 8 KB data pages that are separate from the data pages that store the other data in the same table. These data pages are arranged in a B-tree structure. BLOBs are hard to work with and manipulate. They cannot be used as variables in a procedure or a function and they cannot be used inside string functions such as REPLACE, CHARINDEX or SUBSTRING. In most cases, you have to use READTEXT, WRITETEXT, and UPDATETEXT commands to manipulate BLOBs.

To solve this problem, Microsoft introduced the VARCHAR(MAX), NVARCHAR(MAX), and VARBINARY(MAX) data types in SQL Server 2005. These data types can hold the same amount of data BLOBs can hold (2 GB) and they are stored in the same type of data pages used for other data types. When data in a MAX data type exceeds 8 KB, an over-flow page is used. SQL Server 2005 automatically assigns an over-flow indicator to the page and knows how to manipulate data rows the same way it manipulates other data types. You can declare variables of MAX data types inside a stored procedure or function and even pass them as variables. You can also use them inside string functions.

Microsoft recommend using MAX data types instead of BLOBs in SQL Server 2005. In fact, BLOBs are being deprecated in future releases of SQL Server.

http://www.teratrax.com/articles/varchar_max.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文