在特定列上设置ANSI_PADDING(同一个表的不同列中的ANSI_PADDING ON和OFF)

时间:2015-02-23 07:42:39

标签: sql sql-server ddl

是否可以 - 使用单个CREATE TABLE脚本 - 将特定varbinaryANSI_PADDING = ON设置为ANSI_PADDING = OFF,将其他列设置为CREATE TABLE PaddingX ( ... ColumnA varbinary(max), ... ColumnB varbinary(50) )

e.g。

ColumnA

我希望OFF修剪(填充ColumnB),但ON包含完整(填充)值 - 填充{{1}}。

2 个答案:

答案 0 :(得分:2)

你需要分两步完成:

SET ANSI_PADDING OFF
-- create the table without the columns that need ANSI padding
SET ANSI_PADDING ON
-- alter the table to add the columns that need ANDI passing

这是唯一的方法。

如果您查看SET ANSI_PADDING docs的评论,可以阅读:

  

此设置仅影响新列的定义。创建列后,SQL Server会根据创建列时的设置存储值。以后更改此设置不会影响现有列。

注意:要添加新列,您可以看到ALTER TABLE docs的示例。

答案 1 :(得分:1)

这似乎也适用于包含需要更改的现有列的​​表:

SET ANSI_PADDING ON 
GO 

ALTER TABLE [TableX] ALTER COLUMN [ColumnY] VARBINARY (50) NULL; 
GO 

SET ANSI_PADDING OFF 
GO 

有何评论?它似乎解决了这个问题......