2010-02-06 20 views
20

Vengo da uno sfondo di SQL Server. Quali sarebbero i tipi di dati equivalenti essere per il seguente in MySQL:tipi di dati mysql equivalenti

NVARCHAR - fornisce il supporto per, caratteri internazionali multi-byte per tutte le lingue

NVARCHAR(max) - permette di documenti di testo molto lunghi

+1

da quanto ho letto, nvarchar (n) in grado di memorizzare da 1 a 4.000 caratteri - non proprio la mia definizione di "documenti di testo molto lunghi". Sicuro che intendevi quello? –

+0

NVARCHAR (MAX) è per la roba lunga. Non VARCHAR (n). –

risposta

12

Andando dalle http://msdn.microsoft.com/en-us/library/ms186939.aspx, direi che

VARCHAR(n) CHARSET ucs2 

è l'equivalente più. Ma non vedo molte persone che utilizzano questo, più spesso la gente usa:

VARCHAR(n) CHARSET utf8 

Per quanto ne sono a conoscenza, sia l'insieme di caratteri utf8 e UCS2 permetto per gli stessi caratteri, solo la codifica è diverso. Quindi uno dei due dovrebbe funzionare, e io probabilmente opterei per quest'ultimo dato che è usato più spesso.

Esistono alcune limitazioni nel supporto Unicode di MySQL che possono essere o meno applicabili al caso d'uso. Si prega di fare riferimento a http://dev.mysql.com/doc/refman/5.0/en/charset-unicode.html per maggiori informazioni sul supporto Unicode di MySQL.

12

l'equivalente è VARCHAR o TEXT

MySql supporta nchar e nvarchar ma in un modo diverso. Questo viene implementato utilizzando set di caratteri e regole di confronto (che è un insieme di regole utilizzate per il confronto di stringhe utilizzando il set di caratteri, ad esempio se il confronto deve essere maiuscolo o minuscolo).

MySql definisce set di caratteri a 4 livelli:

Server
Database
Tabella
Colonna

set di caratteri è ereditato dal livello superiore immediato se non si specifica uno. Quello che devi fare è assicurarti che la colonna che vuoi creare di tipo nvarchar abbia un "set di caratteri" impostato su un qualsiasi set di caratteri Unicode (utf8 è la scelta migliore, credo) sia esplicitamente che per eredità.

Per livello di colonna è possibile impostare "set di caratteri" come segue:

create table nvarchar_test 
(
_id varchar(10) character set utf8, 
_name varchar(200) character set ascii 
) 

Nel precedente esempio _id sarà in grado di prendere 10 caratteri Unicode e _name sarà in grado di prendere 100 caratteri unicode (ogni unicode il carattere valuterà due caratteri ascii)

Per ulteriori informazioni, consultare il riferimento MySql.

Problemi correlati