nchar および nvarchar (Transact-SQL)nchar and nvarchar (Transact-SQL)

適用対象: ○SQL Server (2008 以降) ○Azure SQL Database ○Azure SQL Data Warehouse ○Parallel Data Warehouse APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

固定長 (nchar)、または可変長 (nvarchar) の文字データ型です。Character data types that are either fixed-length, nchar, or variable-length, nvarchar. SQL Server 2012 (11.x)SQL Server 2012 (11.x) 以降、補助文字 (SC) が有効になっている照合順序を使用する場合、これらのデータ型には Unicode 文字データの全範囲が格納され、UTF-16 文字エンコードが使用されます。Starting with SQL Server 2012 (11.x)SQL Server 2012 (11.x), when a Supplementary Character (SC) enabled collation is used, these data types store the full range of Unicode character data and use the UTF-16 character encoding. SC が無効の照合順序を指定する場合、これらのデータ型には UCS-2 文字エンコードでサポートされている文字データのサブセットのみが格納されます。If a non-SC collation is specified, then these data types store only the subset of character data supported by the UCS-2 character encoding.

引数Arguments

nchar [ ( n ) ]nchar [ ( n ) ]
固定長の文字列データです。Fixed-length string data. n によってバイト ペアでの文字列の長さが定義されます。1 から 4,000 までの値にする必要があります。n defines the string length in byte-pairs and must be a value from 1 through 4,000. ストレージのサイズは、n の 2 倍のバイト数です。The storage size is two times n bytes. UCS-2 エンコードの場合、ストレージのサイズは n の 2 倍のバイト数となり、格納できる文字数もまた n となります。For UCS-2 encoding, the storage size is two times n bytes and the number of characters that can be stored is also n. UTF-16 エンコードの場合、ストレージのサイズは引き続き n の 2 倍のバイト数ですが、補助文字によって 2 つのバイト ペア (またはサロゲート ペア) が使用されるため、格納できる文字数は n よりも少なくなる場合があります。For UTF-16 encoding, the storage size is still two times n bytes but the number of characters that can be stored may be smaller than n because Supplementary Characters use two byte-pairs (also called surrogate-pair). nchar の ISO シノニムは、national char および national character です。The ISO synonyms for nchar are national char and national character.

nvarchar [ ( n | max ) ]nvarchar [ ( n | max ) ]
可変長の文字列データです。Variable-length string data. n によってバイト ペアでの文字列の長さが定義されます。1 から 4,000 までの値を指定できます。n defines the string length in byte-pairs and can be a value from 1 through 4,000. max は、ストレージの最大サイズが 2^30-1 文字 (2 GB) であることを示します。max indicates that the maximum storage size is 2^30-1 characters (2 GB). ストレージのサイズは、n の 2 倍のバイト数 + 2 バイトです。The storage size is two times n bytes + 2 bytes. UCS-2 エンコードの場合、ストレージのサイズは n の 2 倍のバイト数 + 2 バイトとなり、格納できる文字数もまた n となります。For UCS-2 encoding, the storage size is two times n bytes + 2 bytes and the number of characters that can be stored is also n. UTF-16 エンコードの場合、ストレージのサイズは引き続き n の 2 倍のバイト数 + 2 バイトですが、補助文字によって 2 つのバイト ペア (またはサロゲート ペア) が使用されるため、格納できる文字数は n よりも少なくなる場合があります。For UTF-16 encoding, the storage size is still two times n bytes + 2 bytes but the number of characters that can be stored may be smaller than n because Supplementary Characters use two byte-pairs (also called surrogate-pair). ISO シノニム nvarchar は national char のさまざまな 各国語文字がさまざまなですThe ISO synonyms for nvarchar are national char varying and national character varying.

RemarksRemarks

データ定義または変数宣言ステートメントで n を指定しないと、既定の長さは 1 になります。When n is not specified in a data definition or variable declaration statement, the default length is 1. CAST 関数で n を指定しないと、既定の長さは 30 になります。When n is not specified with the CAST function, the default length is 30.

nchar または nvarchar を使用する場合は、次のことをお勧めします。If you use nchar or nvarchar, we recommend to:

  • 列データ エントリのサイズが一定の場合は、nchar を使用します。Use nchar when the sizes of the column data entries are consistent.
  • 列データ エントリのサイズが大幅に変化する場合は、nvarchar を使用します。Use nvarchar when the sizes of the column data entries vary considerably.
  • 列データ エントリのサイズが大幅に変化し、かつ文字列の長さが 4,000 バイト ペアを超える可能性がある場合は、nvarchar(max) を使用します。Use nvarchar(max) when the sizes of the column data entries vary considerably, and the string length might exceed 4,000 byte-pairs.

sysname と機能的に等価であるシステム提供のユーザー定義データ型は、 nvarchar (128), が許容されない点が異なります。sysname is a system-supplied user-defined data type that is functionally equivalent to nvarchar(128), except that it is not nullable. sysname データベース オブジェクト名を参照するために使用します。sysname is used to reference database object names.

使用するオブジェクト nchar または nvarchar COLLATE 句を使用して、特定の照合順序が割り当てられていない限り、データベースの既定の照合順序は割り当てられます。Objects that use nchar or nvarchar are assigned the default collation of the database unless a specific collation is assigned using the COLLATE clause.

SET ANSI_PADDING が ON にでは常に ncharnvarcharです。SET ANSI_PADDING is always ON for nchar and nvarchar. SET ANSI_PADDING OFF には適用されませんが、 nchar または nvarchar データ型。SET ANSI_PADDING OFF does not apply to the nchar or nvarchar data types.

Unicode 文字の文字列定数には、プレフィックスとして文字 N を付けて UCS-2 または UTF-16 の入力を通知します。これは SC 照合順序が使用されているか使用されていないかによって異なります。Prefix a Unicode character string constants with the letter N to signal UCS-2 or UTF-16 input, depending on whether an SC collation is used or not. プレフィックス N がない場合、文字列はデータベースの既定のコード ページに変換され、特定の文字が認識されない場合があります。Without the N prefix, the string is converted to the default code page of the database that may not recognize certain characters. SQL Server 2019 プレビューSQL Server 2019 preview 以降、UTF-8 が有効になっている照合順序を使用する場合、既定のコード ページでは UNICODE UTF-8 文字セットを格納させることができます。Starting with SQL Server 2019 プレビューSQL Server 2019 preview, when a UTF-8 enabled collation is used, the default code page is capable of storing UNICODE UTF-8 character set.

注意

文字列定数にプレフィックスとして文字 N を付けたときに、変換する定数の長さが nvarchar 文字列データ型の最大長 (4,000) を超えない場合、暗黙的な変換によって UCS-2 または UTF-16 の文字列が生成されます。When prefixing a string constant with the letter N, the implicit conversion will result in a UCS-2 or UTF-16 string if the constant to convert does not exceed the max length for the nvarchar string data type (4,000). それ以外の場合、暗黙的な変換では大きな値の nvarchar(max) が生成されます。Otherwise, the implicit conversion will result in a large-value nvarchar(max).

警告

Null 以外の varchar(max) または nvarchar(max) の各列には、24 バイトの追加の固定割り当てが必要です。これは並べ替え操作中の 8,060 バイトの行制限におけるカウント対象となります。Each non-null varchar(max) or nvarchar(max) column requires 24 bytes of additional fixed allocation, which counts against the 8,060-byte row limit during a sort operation. これらの追加バイトにより、テーブル内の Null 以外の varchar(max) または nvarchar(max) の列数について、暗黙的な制限が生じます。These additional bytes can create an implicit limit to the number of non-null varchar(max) or nvarchar(max) columns in a table. テーブルの作成時やデータ挿入時に、最大行サイズが許容最大値の 8,060 バイトを超えるという通常の警告以外の、特別なエラーは提供されません。No special error is provided when the table is created (beyond the usual warning that the maximum row size exceeds the allowed maximum of 8,060 bytes) or at the time of data insertion. この大きな行サイズにより、一部の通常操作の間に、ユーザーが予期しないエラー (エラー 512 など) が発生することがあります。This large row size can cause errors (such as error 512) that users may not anticipate during some normal operations. このような操作の 2 つの例は、クラスター化インデックス キーの更新と、列セット全体の並べ替えです。Two examples of operations are a clustered index key update, or sorts of the full column set.

文字データの変換Converting Character Data

文字データを変換する方法の詳細については、を参照してください。 char と varchar (&) #40 です。TRANSACT-SQL と #41;.For information about converting character data, see char and varchar (Transact-SQL).

参照See also

ALTER TABLE (Transact-SQL)ALTER TABLE (Transact-SQL)
CAST および CONVERT (Transact-SQL)CAST and CONVERT (Transact-SQL)
COLLATE (Transact-SQL)COLLATE (Transact-SQL)
CREATE TABLE (Transact-SQL)CREATE TABLE (Transact-SQL)
データ型 (Transact-SQL)Data Types (Transact-SQL)
DECLARE @local_variable (Transact-SQL)DECLARE @local_variable (Transact-SQL)
ように (& a) #40 です。TRANSACT-SQL と #41 です。LIKE (Transact-SQL)
SET ANSI_PADDING (Transact-SQL)SET ANSI_PADDING (Transact-SQL)
SET @local_variable (Transact-SQL) SET @local_variable (Transact-SQL)
照合順序と Unicode のサポート Collation and Unicode Support
1 バイト文字セットとマルチバイト文字セットSingle-Byte and Multibyte Character Sets