Как интерпретировать столбец как имеющий другой набор символов для запроса? - PullRequest
0 голосов
/ 21 июня 2011

Мне нужно взаимодействовать с базой данных, для которой я не могу изменить параметры сортировки и кодировку.Тем не менее, я хотел бы выбрать некоторые двоичные данные из него, интерпретировать их, как если бы они были 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,Как мне сделать выборку, которая дает мне вычисленный столбец с назначенным ему правильным набором символов?

Ответы [ 2 ]

2 голосов
/ 21 июня 2011

Хорошо, разобрался. Для современных версий MySQL вы можете использовать CAST, а для более старых - CONVERT (который на самом деле является стандартным SQL).

 SELECT UPPER(CONVERT(BINARY(Filename.Name) USING utf8)) FROM Filename;
0 голосов
/ 21 июня 2011

Я думаю, что вы ищете:

SELECT UPPER(Filename.Name COLLATE utf8_general_ci) FROM Filename;

Но я не уверен, потому что у меня нет поврежденной базы данных для тестирования.

...