2015-09-21 20 views
7

Ho un inserto semplice, ma con caratteri greciCome inserire caratteri greci nella tabella SQLServer

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

Ho provato a generare la tabella in due modi:

create table tmp (fname varchar(40)) 

e

create table tmp (fname nvarchar(40)) 

Quando seleziono i dati:

select * from tmp 

ottengo:

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

sto usando:

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) 

e

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) 

fa la stessa in entrambi.

sto usando:

Microsoft SQL Server Management Studio 11.0.2100.60 

per creare la tabella e inserire i dati, ecc

Come faccio ad avere i caratteri greci per memorizzare correttamente o se sono memorizzati correttamente per visualizzare correttamente quando sono selezionali?

risposta

12

Tenta di utilizzare il prefisso Unicode stringa di caratteri:

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

Inoltre ci può essere un problema con la collazione delle colonne, impostare

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

Da MSDN:

Prefix Costanti stringa di caratteri Unicode con la lettera N. Senza il prefisso N, il la stringa viene convertita nella codepage predefinita del database . Questa tabella codici predefinita potrebbe non riconoscere determinati caratteri.

+1

Naturalmente - duh! - Grazie – Graham

+1

fai attenzione alle regole di confronto SQL: sono principalmente per compatibilità con le versioni precedenti. vedi [documenti] (https://support.microsoft.com/en-us/kb/322112) – Paolo

Problemi correlati