34

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

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

N' は正確には何を意味し、ここでの目的は何なのだろうか。

:答えを検索することで得られるのは、N'が各国語標準の接頭辞であり、ユニコードデータを使用するためのものであるということだけです。しかし、正直なところ、ここで N' の正確な操作について明確な考えを得ることができません。お手数をおかけいたしますが、よりわかりやすい方法でお願いいたします。前もって感謝します。

4

7 に答える 7

34

NUnicode文字列を指定するために使用されます。

ここに良い議論があります:なぜいくつかのSQL文字列に「N」プレフィックスが付いているのですか?

この例Nでは、ASCII文字(値が128未満)はUnicodeに直接マップされるため、プレフィックスは必要ありません。ただし、ASCII以外の名前を挿入する場合は、Nプレフィックスが必要になります。

INSERT [dbo].[TableName] ([Sno], [Name], [EmployeeId], [ProjectId], [Experience]) 
VALUES (1, N'Wāhi', 'ESD157', 'FD080', 7)
于 2013-01-16T07:28:46.743 に答える
12

プレフィックスはSQL-92標準の各"N"国語を表し、Unicode文字を表すために使用されます。

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

タイプが、、またはからの場合に使用さNVARCHARNCHARますNTEXT

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

于 2013-01-16T07:27:43.320 に答える
6

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

于 2013-01-16T07:30:37.823 に答える
2

これは、後続の文字列が含まれていることを示しますUnicodeNは実際には国語の文字セットを表します)。

これは、、、またはではなくNCHAR、、NVARCHARまたはNTEXT値を渡すことを意味します。CHARVARCHARTEXT

于 2013-01-16T07:28:29.173 に答える
1

Nは、その文字列型の値を指定します。

[N]'tsql_string'

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

于 2013-01-16T07:26:59.477 に答える