base64在执行WHERE之前解码mysql列

时间:2011-06-28 13:41:41

标签: mysql base64

基本上 - 它的故事很长 - 但我在数据库中有一个字段,编码为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%'

由于

1 个答案:

答案 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'

否则,您可以使用来自https://github.com/y-ken/mysql-udf-base64

的用户定义函数