我在视图db中有两个不同的内容,其中视图db是从表db生成的。
表中有两列
(CASE WHEN view.dcs = 8 then view.uc2content else view.utf8content END) as 'dcsContent'
uc2content和utf8content肯定是两个不同的编码字符,我使用这个查询创建了一个视图
CONVERT(a.textcolA USING utf8) as utf8content,
CONVERT(a.textcolb USING ucs2) as uc2content,
你知道怎么摆脱这个吗 mix-of-collations
?
提前谢谢
2条答案
按热度按时间yc0p9oo01#
对于所有情况,结果列必须在1个字符集中。如果源列使用不同的字符集,请将它们转换为一个字符集(最好是utf8bm4,对于较旧的mysql版本,最好是utf8)。
但是,我认为最好不要首先将源代码转换为不同的字符集。首先只需将所有内容存储在utf8bm4或utf8中,而不在select或view中转换任何内容。
1dkrff032#
不能在一列中混合使用两个字符集。在执行查询之前,引擎需要知道结果集中每一列的确切数据类型。这包括字符集和排序规则。我甚至无法想象你如何理解这一点,或者你将如何处理客户端的预期结果。也许还有另一种更好更简单的方法来解决真正的问题。
但是,您可以做的是以二进制形式返回值: