0

[これはNVARCHAR や中国語の文字の保存方法に関する質問ではありません]

SQL Server 2008 エクスプレス

データベース照合はSQL_Latin1_General_CP1_CI_AS

create table sample1(val varchar(2))
insert into sample1 values(N'中文')
  1. これらの漢字がジャンク文字になることはわかっています。
  2. nvarchar を使用してすべての問題を解決できることはわかっています。

私が知らないのは、挿入ステートメントを実行したときに「文字列が長すぎます」というエラーが表示されないのはなぜですか?

  1. N プレフィックスは、クライアントが UNICODE を使用して文字列をエンコードすることを意味します。
  2. 漢字2文字で4バイトになります。
  3. varchar(2) には 2 バイトしか含めることができません。

なぜ人々はこの質問に反対票を投じるのですか? 本当?

4

3 に答える 3

2

暗黙のキャストが行われます。これは、「val」が nvarchar(2) として作成された場合に機能します。

于 2013-05-17T10:31:40.707 に答える
0

NVARCHAR(...)、NCHAR(...)データ型を使用してみてください-

CREATE TABLE dbo.sample1
(
    val NVARCHAR(4)
)
INSERT INTO dbo.sample1 
SELECT N'中文'
于 2013-05-17T10:24:57.680 に答える