Sql server sp_帮助中的FixedLenNullInSource是什么意思?
环顾FixedLenNullInSource是为了与SQL 2000兼容,但它实际上意味着什么?在SQL Server 2008中,Sql server sp_帮助中的FixedLenNullInSource是什么意思?,sql-server,sql-server-2005,Sql Server,Sql Server 2005,环顾FixedLenNullInSource是为了与SQL 2000兼容,但它实际上意味着什么?在SQL Server 2008中,sp\u help的定义显示,如果列可为null,并且是varbinary,varchar,binary,char中的一个,则此函数将被硬编码为返回“yes” 'FixedLenNullInSource' = CASE WHEN Type_name(system_type_id) NOT IN ( 'varbinary', 'varch
sp\u help
的定义显示,如果列可为null,并且是varbinary
,varchar
,binary
,char
中的一个,则此函数将被硬编码为返回“yes”
'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
SQL Server 2000中syscolumns
中stats
位的含义没有完整的文档记录,但我找到了一个设置列值的方法,如下所示(0x20
=32
,十进制)
在谷歌搜索COL\u FIXEDNULL
或COL\u NONSQLSUB
时,我找不到太多额外的信息,但我确实发现固定长度数据类型的NULL
值的存储在SQL Server 7中发生了变化。在以前的版本中,可为null的固定长度数据类型被静默地转换为变量,如下表所示
+----------------------------+-----------+
| 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()中讨论了SQL Server的这一点,从Sybase文档中可以看出这一点
从SQL Server 7.0开始,一个NULL
CHAR(100)
列占据了行的固定长度数据部分中声明的整个固定列长度(直到2008年引入稀疏列,这再次改变了行为)
我假定
syscolumns.status中的位
在两种不同的存储格式之间有所区别。即使在2000年BOL中,它也列为。您可能需要找到更早期版本的文档。感谢Martin Smith,他一直在努力查找SQL server 7.0文档中的含义,但似乎随着时间的推移,这些含义已经丢失了!我不知道有没有老学究知道这是什么意思?这些天来,它实际上似乎没有什么意义。如果列可为空且'varbinary',varchar',binary',char',char'
之一,则硬编码返回“yes”。谢谢@MartinSmith。您应该将您的评论作为答案弹出。这对我来说已经足够好了,我会把它标记为答案。答案很好,谢谢@Martin,谢谢你提供的额外细节。
+----------------------------+-----------+
| char | varchar |
| nchar | nvarchar |
| binary | varbinary |
| datetime | datetimn |
| float | floatn |
| int, smallint, and tinyint | intn |
| decimal | decimaln |
| numeric | numericn |
| money and smallmoney | moneyn |
+----------------------------+-----------+