基本的に-長い話ですが、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%'
_を選択することです。 WHERE
を実行する前に、mysqlカラムをbase64でデコードする方法はありますか?
例:SELECT * FROM table WHERE base64_decode(column) LIKE '%Member of Parliament%'
ありがとう
MySQL 5.6.1以降を使用している場合は、FROM_BASE64()関数を使用できます。
TO_BASE64()で使用されるbase-64エンコードルールでエンコードされた文字列を受け取り、デコード結果をバイナリ文字列として返します。引数がNULLまたは有効なbase-64文字列でない場合、結果はNULLです。エンコードとデコードのルールの詳細については、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