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】:相当于VARCHAR
或TEXT
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等效数据类型的主要内容,如果未能解决你的问题,请参考以下文章