web-dev-qa-db-ja.com

N 'はSQLスクリプトで何を表していますか? (挿入スクリプトの文字の前に使用されるもの)

私はこのようなSQLスクリプトを生成しました、

INSERT [dbo].[TableName] ([Sno], [Name], [EmployeeId], [ProjectId], [Experience]) 
VALUES (1, N'Dave', N'ESD157', N'FD080', 7)

ここでN 'が正確に何を意味し、その目的は何なのかと思います。

[〜#〜] note [〜#〜]:答えを検索すると、N 'が各国語標準のプレフィックスであり、Unicodeデータを使用するためのプレフィックスであることがわかります。しかし、正直なところ、ここでN 'の正確な操作について明確なアイデアを得ることができません。よろしくお願いしますわかりやすいのようにしてください。前もって感謝します。

25

Nは、Unicode文字列を指定するために使用されます。

ここに良い議論があります: なぜ一部のSQL文字列に 'N'プレフィックスがあるのですか?

この例では、ASCII文字(128未満の値))が直接Unicodeにマッピングされるため、N接頭辞は必要ありません。ただし、=以外の名前を挿入したい場合ASCIIの場合、N接頭辞が必要になります。

INSERT [dbo].[TableName] ([Sno], [Name], [EmployeeId], [ProjectId], [Experience]) 
VALUES (1, N'Wāhi', 'ESD157', 'FD080', 7)
24

"N"接頭辞は、SQL-92標準の各国語を表し、Unicode文字を表すために使用されます。

UnicodeデータをSQL Serverに渡すときは常に、Unicode文字列の前にNを付ける必要があります。

タイプがNVARCHARNCHARまたはNTEXTの場合に使用されます。

詳細については、これを参照してください: なぜ一部のSQL文字列に 'N'プレフィックスがあるのですか?

8
Vishal Suthar

_'abcd'_は_[var]char_文字列のリテラルです(またはtextですが、varchar(max)の方が一般的です)-4バイトのメモリを占有し、コードを使用しますSQLサーバーが構成されているページ。 _N'abcd'_は、_n[var]char_文字列のリテラル(またはntextですが、nvarchar(max)が望ましい)で、UTF-16を使用して8バイトのメモリを占有します。これにより、完全な国際的な使用が可能になり、率直に言って、_n[var]char_はほとんどのシステムでおそらくデフォルトになるはずです。

5
Marc Gravell

これは、後続の文字列がUnicodeにあることを示します(Nは実際には各国語の文字セットを表します)。

つまり、NCHARNVARCHAR、またはNTEXTではなく、CHARVARCHAR、またはTEXTの値を渡しているということです。

2
John Woo

Nは、文字列型の値であることを指定します。

[[N] 'tsql_string'

定数文字列です。 tsql_stringは、任意のnvarcharまたはvarcharデータ型にすることができます。 Nが含まれている場合、文字列はnvarcharデータ型として解釈されます。

1
Habib

各国には固有の文字と記号があるため、英語US用に設定されたデータベースは、英語UKデータベースが認識する£記号を認識しません。スペイン語、フランス語、ドイツ語についても同様です。

また、中国語、日本語、ヘブライ語、アラビア語などの他の言語では、ラテン文字は使用されません。

したがって、varcharを使用している場合、ローカル文字セットに含まれていないデータを入力しようとすると失敗するか、データが破損します。データベースが複数のローカル文字セットをサポートする必要がある可能性が最も低い場合でも、国別言語の文字セット(UnicodeまたはNChar)を使用する必要があります。これにより、文字セットで国籍を文字とともに記録できます。国際的なテキストサポートの提供

同様に、Nプレフィックスを文字列に追加すると、データベースに、国コードと文字コードを含めるように指示します

0
MikeT