2010-02-06 11 views
20

Ich komme aus einem SQL Server-Hintergrund. Was würden die entsprechenden Datentypen für die folgenden in MySQL sein:mysql äquivalente Datentypen

NVARCHAR - bietet Unterstützung für internationale, Multi-Byte-Zeichen für alle Sprachen

NVARCHAR(max) - ermöglicht sehr lange Textdokumente

+1

von dem, was ich lese, nvarchar (n) kann 1 bis 4000 Zeichen speichern - nicht wirklich meine Definition von „sehr langen Textdokumenten“. Sicher hast du das gemeint? –

+0

NVARCHAR (MAX) ist für die langen Sachen. Nicht VARCHAR (n). –

Antwort

12

Going durch http://msdn.microsoft.com/en-us/library/ms186939.aspx, würde ich sagen, dass

VARCHAR(n) CHARSET ucs2 

in der Nähe entspricht. Aber ich sehe nicht viele Leute diese verwenden, häufiger nutzen, um Menschen:

VARCHAR(n) CHARSET utf8 

Soweit ich weiß, beide Character UTF-8 und für die gleichen Zeichen ucs2 erlauben, nur die Codierung ist anders. Also sollte man entweder arbeiten, und ich würde wahrscheinlich für Letzteres gehen, da es häufiger verwendet wird.

Es gibt einige Einschränkungen in der Unicode-Unterstützung von MySQL, die für Ihren Anwendungsfall gelten können oder auch nicht. Weitere Informationen zur Unicode-Unterstützung von MySQL finden Sie unter http://dev.mysql.com/doc/refman/5.0/en/charset-unicode.html.

12

das entspricht VARCHAR

MySql unterstützt nchar und nvarchar aber auf andere Weise Dies wird mithilfe von Zeichensatz und Kollation implementiert (eine Gruppe von Regeln, die für den Vergleich von Zeichenfolgen mit dem Zeichensatz verwendet werden - z. B. ob der Vergleich die Groß-/Kleinschreibung berücksichtigen soll oder nicht).

MySql definiert Zeichensatz bei 4 Level:

Server
Datenbank
Tabelle
Spalte

Zeichensatz aus der unmittelbaren obersten Ebene vererbt wird, wenn Sie keinen festlegen. Was Sie tun müssen, ist sicherzustellen, dass die Spalte, die Sie vom Typ nvarchar machen wollen, "character set" auf einen beliebigen Unicode-Zeichensatz gesetzt hat (utf8 ist die beste Wahl, glaube ich), entweder explizit oder durch Vererbung.

Für Spaltenebene können Sie „Zeichensatz“ wie folgt festgelegt:

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

Im obigen Beispiel _id werden in der Lage sein, 10 Unicode-Zeichen zu nehmen und _name werden in der Lage sein, 100 Unicode-Zeichen zu nehmen (jedes Unicode Zeichen wird zu zwei ASCII-Zeichen)

Bitte gehen Sie durch MySql Verweis für weitere Erklärung.