MySQL varbinary 字符串解释的默认字符集是什么?
What is the default charset for MySQL varbinary string interpretaion?
有时我会使用 varbinary
而不是 varchar
,尤其是当我需要在 =
比较期间计算尾随空格并且对使用 [=14= 不感兴趣时] 运算符用于此目的。
选择时,我可以指定解码时使用哪个字符集,如下所示:
select convert(myvarbinary using utf8) from mytable
但大多数时候,我只是 select myvarbinary from mytable
而且效果很好。
我的问题是,在后者中,当我不指定字符集时,默认字符集来自哪里?在 varchar 上,它实际上是在每个 table 甚至每个列的基础上设置的,但对于 varbinary 则不是这样。
VARBINARY
没有CHARACTER SET
。所有比较都是逐位进行的。这样的比较有点像COLLATE ..._bin
.
对于 大多数 应用程序,最好在 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
.
中完成所有操作
我能想到的 convert(myvarbinary using utf8)
的唯一原因是如果您在单个列中有多种编码。 那 听起来像一场噩梦。
有时我会使用 varbinary
而不是 varchar
,尤其是当我需要在 =
比较期间计算尾随空格并且对使用 [=14= 不感兴趣时] 运算符用于此目的。
选择时,我可以指定解码时使用哪个字符集,如下所示:
select convert(myvarbinary using utf8) from mytable
但大多数时候,我只是 select myvarbinary from mytable
而且效果很好。
我的问题是,在后者中,当我不指定字符集时,默认字符集来自哪里?在 varchar 上,它实际上是在每个 table 甚至每个列的基础上设置的,但对于 varbinary 则不是这样。
VARBINARY
没有CHARACTER SET
。所有比较都是逐位进行的。这样的比较有点像COLLATE ..._bin
.
对于 大多数 应用程序,最好在 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
.
我能想到的 convert(myvarbinary using utf8)
的唯一原因是如果您在单个列中有多种编码。 那 听起来像一场噩梦。