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

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

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

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

【问题讨论】:

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

标签: mysql sql-server types


【解决方案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

    【讨论】:

      猜你喜欢
      • 2019-07-19
      • 1970-01-01
      • 2020-07-01
      • 1970-01-01
      • 2019-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多