在特定列上设置 ANSI_PADDING(ANSI_PADDING 在同一 table 的不同列中打开和关闭)

Set ANSI_PADDING on a specific column (ANSI_PADDING ON and OFF in different columns of the same table)

是否有可能 - 使用单个 CREATE TABLE 脚本 - 将特定的 varbinary 列设置为 ANSI_PADDING = ON 而将其他列设置为 ANSI_PADDING = OFF

例如

CREATE TABLE PaddingX (
    ...
    ColumnA varbinary(max),
    ...    
    ColumnB varbinary(50)
)

我希望 ColumnA 到 trim(填充 OFF),但 ColumnB 包含完整(填充)值 - 填充 ON

您必须分两步完成:

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的备注,您可以阅读:

This setting affects only the definition of new columns. After the column is created, SQL Server stores the values based on the setting when the column was created. Existing columns are not affected by a later change to this setting.

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

这似乎也适用于需要更改现有列的 table:

SET ANSI_PADDING ON 
GO 

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

SET ANSI_PADDING OFF 
GO 

有意见吗?它似乎可以解决问题...