2011-03-02 42 views
0

好的,引用What is the difference between char, nchar, varchar, and nvarchar in SQL Server?char和nchar字符集

它告訴我,nchar和nvarchar可以存儲UNICODE。那麼可以在CHAR和VARCHAR中使用什麼?

+0

ASCII碼。 * <2更多> * – 2011-03-02 14:19:32

+0

所以ASCII是答案? – Luke 2011-03-02 14:33:04

+1

對於'CHAR'和'VARCHAR',它取決於可以存儲的排序規則和代碼頁。每個字節只能表示256個可能字符中的一個,並且它取決於該排序規則中可用的字符。 – 2011-03-02 20:12:25

回答

1

ncharnvarchar存儲UCS-2個字符(每個字符2個字節,所以不能UTF-16儘可能多的人假設),其中所支持的代碼頁是由選定的排序規則受控

charvarchar商店ASCII字符列(或變量和參數的數據庫/服務器歸類)。在排序規則的詳細信息可以在msdn

+0

我如何知道?這是本地具體的嗎? – Luke 2011-03-02 22:45:59

0

區別在於nchar用於存儲unicode數據,允許您將多語言數據存儲在數據庫表中。具有不能用ASCII字符集表示的字母表的語言具有需要保存的擴展的一組字符代碼,並且該數據類型允許該擴展名。

+0

這不回答這個問題,這是什麼編碼類型是CHAR或VARCHAR – Luke 2011-03-02 14:31:34

0

NCHAR和NVARCHAR每個字符使用2個字節進行存儲,並且限制爲4000個字符。 CHAR和VARCHAR使用一個字節,並且具有8000個字符的限制。

如果您的應用程序僅爲英語,或者使用的語言不需要Unicode擴展字符,則可以使用CHAR或VARCHAR。

+0

這不回答這個問題,這是什麼編碼類型是CHAR或VARCHAR – Luke 2011-03-02 14:32:39

+1

ASCII編碼。你的問題是「什麼可用於...」你不清楚你是否要求編碼。 – 2011-03-02 15:02:09

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 
+0

偉大的代碼。但是我怎麼知道它們中的哪一個在char和nchar中被使用。我現在發現,這個東西在列的表設計器中。但是,有數據庫默認。所以現在我現在可以切換它,但是數據庫默認是什麼。沒關係。這不重要。我現在知道我需要知道什麼。 – Luke 2011-03-04 15:32:23