基本上 - 它的故事很长 - 但我在数据库中有一个字段,编码为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%'
由于
答案 0 :(得分:28)
如果您使用的是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'