gpt4 book ai didi

sql-server - sp_help 中的FixedLenNullInSource 是什么意思?

转载 作者:行者123 更新时间:2023-12-02 23:25:33 24 4
gpt4 key购买 nike

查看FixedLenNullInSource是为了与SQL 2000兼容,但它实际上意味着什么?

最佳答案

在 SQL Server 2008 中 sp_help 的定义显示如果该列可为空并且 varbinary 之一,则此值被硬编码为返回“yes” , varchar , binary , char

   'FixedLenNullInSource' = 
CASE
WHEN Type_name(system_type_id) NOT IN ( 'varbinary', 'varchar',
'binary', 'char' ) THEN '(n/a)'
WHEN is_nullable = 0 THEN @no
ELSE @yes
END

在 SQL Server 2000 中,它的定义不同:

   'FixedLenNullInSource' = case  
when type_name(xtype) not in ('varbinary','varchar','binary','char')
Then '(n/a)'
When status & 0x20 = 0 Then @no
Else @yes END
/* ... */
from syscolumns

stats的含义syscolumns 中的位在 SQL Server 2000 中没有完整记录,但我发现了 SQL Server 7.0 SP4 upgrade script将列值设置如下( 0x20 = 32 十进制)

+ CASE WHEN (type_name(xtype) IN ('text', 'image')
AND (colstat & 0x2000)!=0)
OR (type_name(xtype) IN ('binary', 'char', 'timestamp')
AND (typestat&1)=0 )
THEN 32 ELSE 0 END -- COL_FIXEDNULL, COL_NONSQLSUB

在谷歌搜索 COL_FIXEDNULL 时,我找不到太多附加信息。或COL_NONSQLSUB但确实发现NULL的存储SQL Server 7 中固定长度数据类型的值已更改。在以前的版本中,可空固定长度数据类型会按照下表自动转换为变量。

+----------------------------+-----------+
| char | varchar |
| nchar | nvarchar |
| binary | varbinary |
| datetime | datetimn |
| float | floatn |
| int, smallint, and tinyint | intn |
| decimal | decimaln |
| numeric | numericn |
| money and smallmoney | moneyn |
+----------------------------+-----------+

这在 KB 463166 ( only available in French ) 中针对 SQL Server 进行了讨论,通过查看 Sybase 文档,似乎是 still the case in that product .

从 SQL Server 7.0 开始 NULL CHAR(100)列占据了行的固定长度数据部分中声明的全部固定列长度(直到 2008 年引入稀疏列 - 这再次改变了行为)。

我认为这个 bitsyscolumns.status区分两种不同的存储格式。

关于sql-server - sp_help 中的FixedLenNullInSource 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7331954/

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