# #sql #google-bigquery
Вопрос:
Мы зашифровали SHA256 поле в нашей таблице в Google BigQuery, которое оставило тип результата в БАЙТАХ.
Мы пробовали писать различные запросы на соответствующие поля, но ни один из них, по-видимому, не является правильным.
SELECT * WHERE
field LIKE '16D6M7PN3w7Cn8mJyrmrUSZY9ummMf5QCGEMuiSmSlw='
SELECT ...
field = '16D6M7PN3w7Cn8mJyrmrUSZY9ummMf5QCGEMuiSmSlw='
SELECT ...
field = 16D6M7PN3w7Cn8mJyrmrUSZY9ummMf5QCGEMuiSmSlw=
Как написать SQL-запрос в BigQuery для запроса полей БАЙТОВ?
Обновление: Теперь у нас есть запрос, выполняемый с использованием ответа Гордона ниже, но он возвращает нулевые результаты, даже если байтовый код точно соответствует тому, что показывает BigQuery. Есть ли что-то еще, что нам нужно сделать, чтобы сопоставить байты?
Ответ №1:
Я думаю, что пользовательский интерфейс показывает базовое 64-экранированное содержимое столбцов байтов, поскольку они не могут быть отображены как UTF-8. Вам нужно будет использовать, например
SELECT *
FROM T
WHERE field = FROM_BASE64('16D6M7PN3w7Cn8mJyrmrUSZY9ummMf5QCGEMuiSmSlw=');
Комментарии:
1. Тх. Это сработало. StackOverflow — сколько проектов он экономит каждую ночь. Серьезно, лучший ресурс для кодирования на планете.
Ответ №2:
Литерал байтов начинается с b
. Это объясняется в документации.
Я думаю, ты хочешь:
SELECT *
FROM . . .
WHERE field = b'16D6M7PN3w7Cn8mJyrmrUSZY9ummMf5QCGEMuiSmSlw='
Комментарии:
1. Это привело к запуску запроса, но он возвращает нулевые результаты. Если мы запросим таблицу, увидим поле SHA256, скопируем его (как в вопросе) и запросим его, как вы показали — BigQuery сообщает нам, что результатов ноль. Есть ли еще один трюк с преобразованием байтов?