Подтвердить что ты не робот

Base64 декодирует столбец mysql перед выполнением WHERE

В принципе - это длинная история, но у меня есть поле в базе данных, которое закодировано как строка base64.

EG: это сохраняется в базе данных:

YToyOntzOjIwOiJUeXBlX29mX29yZ2FuaXNhdGlvbiI7czoyMDoiTWVtYmVyIG9mIFBhcmxpYW1lbnQiO3M6ODoiUG9zdGNvZGUiO3M6NzoiUEUxIDFKQSI7fQ==

Что равно этому:

a:2:{s:20:"Type_of_organisation";s:20:"Member of Parliament";s:8:"Postcode";s:7:"#postcode#";}

Что я хочу сделать, это выбрать, где находится эта строка LIKE '%Member of Parliament%'. Есть ли способ, чтобы base64 декодировал столбец mysql перед выполнением WHERE?

например: SELECT * FROM table WHERE base64_decode(column) LIKE '%Member of Parliament%'

Спасибо

4b9b3361

Ответ 1

Если вы используете MySQL 5.6.1 или выше, вы можете использовать функцию FROM_BASE64():

Принимает строку, закодированную законами кодирования base-64, используемыми TO_BASE64(), и возвращает декодированный результат в виде двоичной строки. Результат равен NULL, если аргумент NULL или не действительная строка base-64. Подробнее о правилах кодирования и декодирования см. Описание TO_BASE64().

Эта функция была добавлена ​​в MySQL 5.6.1.

mysql > SELECT TO_BASE64 ('abc'), FROM_BASE64 (TO_BASE64 ('abc'));         - > 'JWJj', 'abc'

В противном случае вы можете использовать функцию, определенную пользователем: https://github.com/y-ken/mysql-udf-base64