gpt4 book ai didi

sql-server - 长度与精度

转载 作者:行者123 更新时间:2023-12-02 23:18:56 27 4
gpt4 key购买 nike

当我使用 nvarchar 数据类型描述表时,PrecisionLength 之间有什么区别?我看到 Length 始终是 double 。例如,值为 nvarchar(64),精度为 64,长度为 128。

CREATE TABLE T(X nvarchar(64))
EXEC sp_columns 'T'

最佳答案

精度对于文本数据没有意义。

至于 Length 属性,我认为您将它与 SQL Server Management Studio 报告的 Size 混淆了,后者是列的大小(以字节为单位)。 nvarchar(64) 列的 Length 为 64,而 Size 为 128。

unicode 类型(nchar、nvarchar)的大小是字符数的两倍,因为 Unicode 每个字符使用两个字节。

您可以使用 LEN 获取这些值函数获取字符数和 DATALENGTH函数来获取字节数,例如。

select len(N'some value'), datalength(N'some value')

返回10 20

编辑

从您的评论中我看到您使用 sp_columns获取表的架构信息。您不应使用任何目录存储过程,而应使用目录 View 。

正如文档所述,catalog stored procedures正如您所发现的,它们用于支持 ODBC 应用程序,因此它们的结果是有限的并且可能需要解释。例如,sp_columns 不区分字符和数据长度。

类似于 INFORMATION_SCHEMA 中的架构 View 或sys模式返回详细且明确的信息。例如,INFORMATION_SCHEMA.COLUMNS返回 CHARACTER_MAXIMUM_LENGTH 中的字符长度和 CHARACTER_OCTET_LENGTH 中的字节大小。它还包括 sp_columns 未返回的排序规则和字符集信息。

INFORMATION_SCHEMA View 由 ISO 定义,因此它们不包含某些特定于 SQL Server 的信息,例如列是计算列、存储在文件流中还是已复制。您可以使用 system object catalog views 获取此信息像sys.columns

关于sql-server - 长度与精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18337497/

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