加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

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

发布时间:2021-03-13 21:58:10 所属栏目:编程 来源:网络整理
导读:看看FixedLenNullInSource是为了兼容SQL 2000,但它毕竟意味着什么? 办理要领 在SQL Server 2008中,sp_help的界说表现,假如列可觉得空而且varbinary,varchar,binary,char之一,则将其硬编码为返回“yes” 'FixedLenNullInSource' = CASE WHEN Type_name(system

看看FixedLenNullInSource是为了兼容SQL 2000,但它毕竟意味着什么?

办理要领

在SQL Server 2008中,sp_help的界说表现,假如列可觉得空而且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','char')  
       Then '(n/a)'  
      When status & 0x20 = 0 Then @no  
      Else @yes END
      /* ... */
      from syscolumns

SQL Server 2000中syscolumns中stats位的寄义没有完备记录,但我发明白一个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时找不到更多的附加信息,但确实发明SQL Server 7中牢靠长度数据范例的NULL值存储已变动.在早年的版本中,可空的牢靠长度数据范例凭证静默方法转换为变量下表.

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

有关SQL Server的常识,请拜见常识库文章463166(only available in French),以及查察呈现的Sybase文档,即still the case in that product.

从SQL Server 7.0开始,NULL CHAR(100)列占用了行的牢靠长度数据部门中的整个声明的牢靠列长度(直到2008年引入了稀少列 – 这再次改变了举动).

我假设syscolumns.status中的这个位区分了两种差异的存储名目.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读