SET ANSI_PADDING (Transact-SQL)SET ANSI_PADDING (Transact-SQL)

適用対象: ○SQL Server XAzure SQL Database ○Azure SQL Data Warehouse ○Parallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

列に定義されているサイズよりも短い値を列に格納する方法と、値の後に charvarcharbinaryvarbinary データ型で空白が続いている値を列に格納する方法を指定します。Controls the way the column stores values shorter than the defined size of the column, and the way the column stores values that have trailing blanks in char, varchar, binary, and varbinary data.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

-- Syntax for SQL Server

SET ANSI_PADDING { ON | OFF }
-- Syntax for Azure SQL Data Warehouse and Parallel Data Warehouse

SET ANSI_PADDING ON

RemarksRemarks

charvarcharbinary、および varbinary データ型で定義された列は、定義されたサイズを持ちます。Columns defined with char, varchar, binary, and varbinary data types have a defined size.

この設定は新しい列の定義にだけ影響します。This setting affects only the definition of new columns. 列が作成された後は、 SQL ServerSQL Server では列の作成時の設定に基づいて値が格納されます。After the column is created, SQL ServerSQL 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.

注意

ANSI_PADDING は常に ON になっている必要があります。ANSI_PADDING should always be set to ON.

次の表は、charvarcharbinary、および varbinary データ型の列に値を挿入するときに、SET ANSI_PADDING の設定がどのように影響するかを示しています。The following table shows the effects of the SET ANSI_PADDING setting when values are inserted into columns with char, varchar, binary, and varbinary data types.

設定Setting char(n) NOT NULL または binary(n) NOT NULLchar(n) NOT NULL or binary(n) NOT NULL char(n) NULL または binary(n) NULLchar(n) NULL or binary(n) NULL varchar(n) または varbinary(n)varchar(n) or varbinary(n)
ONON 列の定義サイズになるように、char 型の列の場合は元の値の右側を空白で埋め、binary 型の列の場合は 0 で埋めます。Pad original value (with trailing blanks for char columns and with trailing zeros for binary columns) to the length of the column. SET ANSI_PADDING が ON の場合は、char( n ) または binary( n ) NOT NULL と同じ規則に従います。Follows same rules as for char(n) or binary(n) NOT NULL when SET ANSI_PADDING is ON. varchar 型の列に挿入された文字値の末尾にある空白は切り捨てられません。Trailing blanks in character values inserted into varchar columns are not trimmed. varbinary 型の列に挿入されたバイナリ値の末尾にある 0 は切り捨てられません。Trailing zeros in binary values inserted into varbinary columns are not trimmed. 値は列の長さに合わせてパディングされません。Values are not padded to the length of the column.
OFFOFF 列の定義サイズになるように、char 型の列の場合は元の値の右側を空白で埋め、binary 型の列の場合は 0 で埋めます。Pad original value (with trailing blanks for char columns and with trailing zeros for binary columns) to the length of the column. SET ANSI_PADDING が OFF の場合は、varchar または varbinary と同じ規則に従います。Follows same rules as for varchar or varbinary when SET ANSI_PADDING is OFF. varchar 型の列に挿入された文字値の末尾にある空白は切り捨てられます。Trailing blanks in character values inserted into a varchar column are trimmed. varbinary 型の列に挿入されたバイナリ値の末尾にある 0 は切り捨てられます。Trailing zeros in binary values inserted into a varbinary column are trimmed.

注意

埋め込みが行われる場合、char 型の列は空白で埋められ、binary 型の列は 0 で埋められます。When padded, char columns are padded with blanks, and binary columns are padded with zeros. 切り捨てられる場合は、char 型の列では末尾の空白が切り捨てられ、binary 型の列では末尾の 0 が切り捨てられます。When trimmed, char columns have the trailing blanks trimmed, and binary columns have the trailing zeros trimmed.

計算列やインデックス付きビューのインデックスを作成または変更するときには、ANSI_PADDING を ON に設定する必要があります。ANSI_PADDING must be ON when you are creating or changing indexes on computed columns or indexed views. インデックス付きビューおよび計算列上のインデックスに必要な SET オプション設定の詳細については、「SET ステートメント (Transact-SQL)」の「SET ステートメントの使用に関する留意事項」を参照してください。For more information about required SET option settings with indexed views and indexes on computed columns, see "Considerations When You Use the SET Statements" in SET Statements (Transact-SQL).

既定では、SET ANSI_PADDING は ON に設定されています。The default for SET ANSI_PADDING is ON. SQL ServerSQL Server Native Client ODBC ドライバーおよび SQL ServerSQL Server Native Client OLE DB Provider for SQL ServerSQL Server では、接続時に自動的に ANSI_PADDING が ON に設定されます。The SQL ServerSQL Server Native Client ODBC driver and SQL ServerSQL Server Native Client OLE DB Provider for SQL ServerSQL Server automatically set ANSI_PADDING to ON when connecting. この構成は、ODBC データ ソースまたは ODBC 接続属性で定義でき、接続前にアプリケーションで設定される OLE DB 接続プロパティでも定義できます。This can be configured in ODBC data sources, in ODBC connection attributes, or OLE DB connection properties set in the application before connecting. DB-Library アプリケーションからの接続に対しては、既定で SET ANSI_PADDING は OFF に設定されています。The default for SET ANSI_PADDING is OFF for connections from DB-Library applications.

SET ANSI_PADDING 設定は、ncharnvarcharntexttextimagevarbinary(max)varchar(max) 、および nvarchar(max) データ型には影響しません。The SET ANSI_PADDING setting does not affect the nchar, nvarchar, ntext, text, image, varbinary(max), varchar(max), and nvarchar(max) data types. これらの値では、常に SET ANSI_PADDING ON の動作が示されます。They always display the SET ANSI_PADDING ON behavior. つまり、末尾の空白と 0 は切り捨てられません。This means trailing spaces and zeros are not trimmed.

ANSI_DEFAULTS が ON の場合は、ANSI_PADDING が有効になります。When ANSI_DEFAULTS is ON, ANSI_PADDING is enabled.

ANSI_PADDING の設定は、解析時ではなく実行時に定義されます。The setting of ANSI_PADDING is defined at execute or run time and not at parse time.

この設定の現在の設定を表示するには、次のクエリを実行します。To view the current setting for this setting, run the following query.

DECLARE @ANSI_PADDING VARCHAR(3) = 'OFF';  
IF ( (16 & @@OPTIONS) = 16 ) SET @ANSI_PADDING = 'ON';  
SELECT @ANSI_PADDING AS ANSI_PADDING;  

アクセス許可Permissions

ロール public のメンバーシップが必要です。Requires membership in the public role.

使用例Examples

次の例では、この設定が各データ型にどのように影響するかを示しています。The following example shows how the setting affects each of these data types.

ANSI_PADDING を ON に設定し、テストします。Set ANSI_PADDING to ON and test.

PRINT 'Testing with ANSI_PADDING ON'  
SET ANSI_PADDING ON;  
GO  
  
CREATE TABLE t1 (  
   charcol CHAR(16) NULL,   
   varcharcol VARCHAR(16) NULL,   
   varbinarycol VARBINARY(8)  
);  
GO  
INSERT INTO t1 VALUES ('No blanks', 'No blanks', 0x00ee);  
INSERT INTO t1 VALUES ('Trailing blank ', 'Trailing blank ', 0x00ee00);  
  
SELECT 'CHAR' = '>' + charcol + '\<', 'VARCHAR'='>' + varcharcol + '\<',  
   varbinarycol  
FROM t1;  
GO  

次に ANSI_PADDING を OFF に設定し、テストします。Now set ANSI_PADDING to OFF and test.

PRINT 'Testing with ANSI_PADDING OFF';  
SET ANSI_PADDING OFF;  
GO  
  
CREATE TABLE t2 (  
   charcol CHAR(16) NULL,   
   varcharcol VARCHAR(16) NULL,   
   varbinarycol VARBINARY(8)  
);  
GO  
INSERT INTO t2 VALUES ('No blanks', 'No blanks', 0x00ee);  
INSERT INTO t2 VALUES ('Trailing blank ', 'Trailing blank ', 0x00ee00);  
  
SELECT 'CHAR' = '>' + charcol + '\<', 'VARCHAR'='>' + varcharcol + '<',  
   varbinarycol  
FROM t2;  
GO  
  
DROP TABLE t1;  
DROP TABLE t2;  

参照See Also

SET ステートメント (Transact-SQL) SET Statements (Transact-SQL)
SESSIONPROPERTY (Transact-SQL) SESSIONPROPERTY (Transact-SQL)
CREATE TABLE (Transact-SQL) CREATE TABLE (Transact-SQL)
INSERT (Transact-SQL) INSERT (Transact-SQL)
SET ANSI_DEFAULTS (Transact-SQL)SET ANSI_DEFAULTS (Transact-SQL)