2015-09-21 24 views
7

我有一個簡單的插入,但與希臘字母如何插入希臘字符到SQLSERVER表

INSERT INTO tmp (fname) VALUES ('ΚΩΝΣΤΑΝΤΙΝΟΣ') 

我曾嘗試創建表的方法有兩種:

create table tmp (fname varchar(40)) 

create table tmp (fname nvarchar(40)) 

當我然後選擇數據:

select * from tmp 

我得到:

?O?S???????S 

我使用:

Microsoft SQL Server 2005 - 9.00.4060.00 (Intel X86) 
    Mar 17 2011 13:20:38 
    Copyright (c) 1988-2005 Microsoft Corporation 
    Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2) 

Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64) 
    Oct 19 2012 13:38:57 
    Copyright (c) Microsoft Corporation 
    Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor) 

它在兩個相同的。

我使用:

Microsoft SQL Server Management Studio 11.0.2100.60 

創建表和插入數據等

如何獲得希臘字符正確地存儲或如果它們存儲到正確正確顯示,當我選擇他們?

回答

12

嘗試使用前綴的Unicode字符串:

create table tmp (fname nvarchar(40)) 
INSERT INTO tmp (fname) VALUES (N'ΚΩΝΣΤΑΝΤΙΝΟΣ') 

也有可能與列的排序問題,請設置

create table tmp (fname nvarchar(40) COLLATE SQL_Latin1_General_CP1253_CI_AI) 

MSDN

前綴Unicode字符串常量與字母N.不帶 N前綴,字符串被轉換爲 數據庫的默認代碼頁。此默認代碼頁可能無法識別某些字符。

+1

當然 - 呃! - 謝謝 – Graham

+1

提防SQL排序規則:主要是爲了向後兼容。請參閱[文檔](https://support.microsoft.com/en-us/kb/322112) – Paolo