mysql等效数据类型

Bla*_*man 23 mysql sql-server types

我来自SQL Server背景.MySQL中的以下等效数据类型是什么:

NVARCHAR - 为所有语言的国际多字节字符提供支持

NVARCHAR(max) - 允许很长的文本文档

Rol*_*man 14

请访问http://msdn.microsoft.com/en-us/library/ms186939.aspx,我会说

VARCHAR(n) CHARSET ucs2
Run Code Online (Sandbox Code Playgroud)

是最接近的等价物.但我没有看到很多人使用它,更常见的是人们使用:

VARCHAR(n) CHARSET utf8
Run Code Online (Sandbox Code Playgroud)

据我所知,字符集utf8和ucs2允许相同的字符,只有编码是不同的.所以任何一个应该工作,我可能会选择后者,因为它经常使用.

MySQL的unicode支持有一些限制,可能适用于您的用例,也可能不适用.有关MySQL的unicode支持的更多信息,请参阅http://dev.mysql.com/doc/refman/5.0/en/charset-unicode.html.

  • 现在应该使用 utf8mb4 来表示更广泛的字符和表情符号。见[这个答案](/sf/answers/2105218741/) (2认同)
  • mysql中的utf-8编码似乎不是真正的utf-8,它只包含有限数量的字符......应该使用utf8mb4代替 (2认同)

Pen*_*m10 13

相当于VARCHARTEXT

MySql支持nchar和nvarchar,但方式不同.这是使用字符集和排序规则(这是一组用于使用字符集比较字符串的规则 - 例如比较是否应区分大小写)来实现的.

MySql将字符集定义为4级:

服务器
数据库

如果您未指定字符集,则会从直接顶级继承.您需要做的是确保您要生成类型为nvarchar的列将"字符集"设置为任何unicode字符集(utf8是我认为的最佳选择)显式或继承.

对于列级别,您可以设置"字符集",如下所示:

create table nvarchar_test
(
_id varchar(10) character set utf8,
_name varchar(200) character set ascii
)
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,_id将能够获取10个unicode字符,_name将能够获取100个unicode字符(每个unicode字符将评估为两个ascii字符)

请仔细阅读MySql参考资料以获得进一步说明.


Cor*_*ryC 6

在MySQL 5中,支持NVARCHAR(National Varchar的简写)并使用utf8作为预定义字符集.

http://dev.mysql.com/doc/refman/5.0/en/charset-national.html