有时我会使用varbinary
代替varchar
,尤其是在=
比较期间我需要尾随空格来计算,并且对使用LIKE
运算符不感兴趣为了这个目的。
选择时,我可以指定在解码时使用哪个字符集:
select convert(myvarbinary using utf8) from mytable
但大多数时候,我只是select myvarbinary from mytable
而且效果很好。
我的问题是,在后者中,当我没有指定字符集时,默认字符集来自何处?在varchar上,它实际上是基于每个表甚至是每个列设置的,但对于varbinary则不然。
答案 0 :(得分:0)
Splash files
没有VARBINARY
。所有比较都是逐位进行的。这种比较有点像CHARACTER SET
。
对于大多数应用程序,最好在COLLATE ..._bin
中执行所有操作。
我能想到CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
的唯一原因是,如果您在一个列中有各种编码。 那听起来像是一场噩梦。