zoukankan      html  css  js  c++  java
  • 关于SET ANSI_PADDING的作用

    Sql Server 中经常会用到会自动生成SET ANSI_PADDING { ON | OFF }语句,具体作用是什么呢?

      一、Sql Server的填充和裁剪规则是,char和varchar指的是在值的尾部对空格的填充或裁剪,binary和varbinary指的是在值的尾部对零的填充或裁剪。 

      二、如果ANSI_PADDING设置为ON,char(n)和binary(n)会根据Sql Server的填充规则进行填充(如果值可为NULL,则赋值为NULL时不填充),填充以达到列的长度;varchar(n) 或 varbinary(n)则根据实际情况进行存储。

      比如:char(10)和varchar(10),如果赋值为'hello'(不包括引号),那么char(10)就会以'hello     '(不包括引号,hello后有5个空格),varchar就会只存储'hello'(不包括引号),所以varchar会根据实际的赋值情况分配空间,char则会根据长度定义进行填充。

      同理,binary(4)和varbinary(4) 如果赋值为0x00ee,那么binary(4)会以0x00ee0000存储;varbinary(4)就会只存储为0x00ee。

    如果在赋值或插入记录时char和varchar尾随有空格或binary和varbinary尾随有零,如'hello  '(不包括引号)和0x00ee00,Sql Server会直接存储,不做任何处理,相当于空格和零是值的一部分。

      三、如果ANSI_PADDING设置为OFF,char和binary将不会在尾部用空格或零进行填充,如果char、varchar、binary和varbinary的值尾随有空格或零,Sql Server将按裁剪规则进行裁剪存储。

      四、此设置只影响新列的定义,创建列后,SQL Server会基于创建列时的设置存储这些值,以后对此设置的更改不会影响现有的列。

      五、SET ANSI_PADDING 的默认值为 ON。SQL Server 的 SQL Server Native Client ODBC 驱动程序和 SQL Server Native Client OLE DB 提供程序在连接时会自动将 ANSI_PADDING 设置为 ON。

      六、针对char和binary,在如果ANSI_PADDING设置为OFF时是否要在尾部进行填充以达到列长度,不同的Sql Server版本不一致Sql Server 2000是不填充,Sq Server 2008则还是继续填充以保存值与列定义的长度一致。其他版本尚未测试。

  • 相关阅读:
    ueditor PHP版本使用方法
    PHP三维优先级运算
    navicate for mysql中的sql存放位置和备份
    wamp配置步骤
    phpeclipse xdebug 配置配置 -摘自网络
    xls 和 xml 数据 排序 绑定 -原创
    XSLT教程 比较全的 -摘自网络
    XPath在asp.net中查询XML -摘自网络
    windows上zend server安装 报The server encountered an internal error or misconfiguration and was unable to complete your request -解决方法 摘自网络
    开源项目 配置管理软件推荐
  • 原文地址:https://www.cnblogs.com/meizhouxiang/p/14821422.html
Copyright © 2011-2022 走看看