base64 декодирует MySQL столбец перед выполнением WHERE - PullRequest
17 голосов
/ 28 июня 2011

В основном - это длинная история - но у меня есть поле в базе данных, которое закодировано как строка 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 Ответ

28 голосов
/ 23 мая 2013

Если вы используете 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...