我需要与数据库连接,我无法更改排序规则和字符集。 但是,我想从中选择一些二进制数据,将其解释为UTF8,然后对其执行UPPER(因为只对二进制执行UPPER()返回原始值)。
我认为这有效:
SELECT UPPER(Filename.Name) COLLATE utf8_general_ci FROM Filename;
但它并没有抱怨
COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'binary'
这是公平的,我需要一些咒语来将二进制字段转换为utf-8。如何进行选择,为我提供一个计算列,并为其分配正确的字符集?
答案 0 :(得分:2)
好的想通了。对于现代MySQL版本,您可以使用CAST,对于较旧版本的CONVERT(实际上是标准SQL)。
SELECT UPPER(CONVERT(BINARY(Filename.Name) USING utf8)) FROM Filename;
答案 1 :(得分:0)
我认为你在寻找:
SELECT UPPER(Filename.Name COLLATE utf8_general_ci) FROM Filename;
但我不确定,因为我没有破坏的数据库来测试。