0

わかりました、参照SQL Serverのchar、nchar、varchar、およびnvarcharの違いは何ですか?

nchar と nvarchar が UNICODE を格納できることがわかります。では、CHAR と VARCHAR では何が使用できるのでしょうか?

4

4 に答える 4

1

ncharnvarcharUCS-2文字を格納します(1文字あたり2バイトなので、多くの人が想定しているUTF-16ではありません)

charサポートされているコードページが列に対して選択された照合(または変数とパラメーターのデータベース/サーバー照合)によって制御されるASCII文字をvarchar格納します。照合の詳細については、msdnを参照してください。

于 2011-03-02T22:19:17.877 に答える
1

「どうやって調べたらいいの?」という質問に答えて

SET NOCOUNT ON;

IF DB_ID('Collations') IS NULL
    CREATE DATABASE Collations
GO

USE Collations

IF OBJECT_ID('Collations') IS NOT NULL
    DROP TABLE Collations

CREATE TABLE Collations
  (
     code TINYINT IDENTITY(0, 1)
  )

GO

INSERT INTO Collations
DEFAULT VALUES

GO 256

DECLARE @AlterScript NVARCHAR(MAX) = ''

SELECT @AlterScript = @AlterScript + ' 
RAISERROR(''Processing: ' + name + ''',0,1) WITH NOWAIT;
ALTER DATABASE [Collations] COLLATE ' + name + ';
ALTER TABLE Collations ADD ' + name + ' CHAR(1) COLLATE ' + name + ';
EXEC(''UPDATE Collations SET ' + name + '=CHAR(code)'');

'
FROM   sys.fn_helpcollations()
WHERE  name LIKE '%CS_AS'
       AND name NOT IN    /*Unicode Only Collations*/
                        ( 'Assamese_100_CS_AS', 'Bengali_100_CS_AS',
                         'Divehi_90_CS_AS', 'Divehi_100_CS_AS' ,
                         'Indic_General_90_CS_AS', 'Indic_General_100_CS_AS',
                             'Khmer_100_CS_AS', 'Lao_100_CS_AS',
                         'Maltese_100_CS_AS', 'Maori_100_CS_AS',
                         'Nepali_100_CS_AS', 'Pashto_100_CS_AS',
                         'Syriac_90_CS_AS', 'Syriac_100_CS_AS',
                         'Tibetan_100_CS_AS' )


EXEC (@AlterScript)


SELECT *
FROM   Collations
于 2011-03-02T23:57:28.470 に答える
0

違いは、ncharを使用してUnicodeデータを格納し、データベーステーブルに多言語データを格納できることです。ASCII文字セットを使用して表現できないアルファベットを持つ言語には、保存する必要のある文字コードの拡張セットがあり、このデータ型ではこの拡張が可能です。

于 2011-03-02T14:18:38.660 に答える
0

NCHAR および NVARCHAR は、ストレージに 1 文字あたり 2 バイトを使用し、4000 文字の制限があります。CHAR と VARCHAR は 1 バイトを使用し、8000 文字の制限があります。

アプリケーションが英語のみの場合、または Unicode 拡張文字を必要としない言語の場合は、CHAR または VARCHAR を使用できます。

于 2011-03-02T14:20:21.500 に答える