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%'
Спасибо
Ответы
Ответ 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