mysql等效数据类型

Posted

技术标签:

【中文标题】mysql等效数据类型【英文标题】:mysql equivalent data types 【发布时间】:2011-01-13 23:13:23 【问题描述】:

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

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

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

【问题讨论】:

根据我的阅读,nvarchar(n) 可以存储 1 到 4,000 个字符——这并不是我对“非常长的文本文档”的定义。你确定是那个意思? NVARCHAR(MAX) 是长篇大论。不是 VARCHAR(n)。 【参考方案1】:

相当于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
)

在上面的例子中,_id 可以使用 10 个 unicode 字符,_name 可以使用 100 个 unicode 字符(每个 unicode 字符将计算为两个 ascii 字符)

请通过 MySql 参考以获得进一步的解释。

【讨论】:

【参考方案2】:

通过http://msdn.microsoft.com/en-us/library/ms186939.aspx,我会这么说

VARCHAR(n) CHARSET ucs2

是最接近的等价物。但我没有看到很多人使用这个,更多的人使用:

VARCHAR(n) CHARSET utf8

据我所知,utf8 和 ucs2 两个字符集都允许使用相同的字符,只是编码不同。所以任何一个都应该工作,我可能会选择后者,因为它使用得更频繁。

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

【讨论】:

现在应该使用 utf8mb4 来表示更广泛的字符和表情符号。见this answer mysql中的utf-8编码似乎不是真正的utf-8,它只包含有限数量的字符...应该改用utf8mb4【参考方案3】:

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

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

【讨论】:

以上是关于mysql等效数据类型的主要内容,如果未能解决你的问题,请参考以下文章

VC数据类型的等效性

MySQL 的 TEXT 类型的 Oracle 等效项

数字数据类型的 Oracle 等效 NVL

Protobuf 中的等效数据类型

SQL Server 数据类型的 C# 等效项

SQL Server 到 Netezza 数据类型等效