基本上 - 这是一个很长的故事 - 但我在数据库中有一个字段被编码为 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%'
。有没有办法在执行之前对 mysql 列进行 Base64 解码WHERE
?
eg: SELECT * FROM table WHERE base64_decode(column) LIKE '%Member of Parliament%'
Thanks
如果您使用 MySQL 5.6.1 或更高版本,您可以使用 FROM_BASE64() 函数:
获取使用 TO_BASE64() 使用的 base-64 编码规则进行编码的字符串,并将解码结果作为二进制字符串返回。如果参数为 NULL 或不是有效的 base-64 字符串,则结果为 NULL。有关编码和解码规则的详细信息,请参见 TO_BASE64() 的说明。
该功能是在 MySQL 5.6.1 中添加的。
mysql> 选择 TO_BASE64('abc'), FROM_BASE64(TO_BASE64('abc'));
-> 'JWJj', 'abc'
- http://dev.mysql.com/doc/refman/5.6/en/string-functions.html#function_from-base64 http://dev.mysql.com/doc/refman/5.6/en/string-functions.html#function_from-base64
否则,您可以使用以下位置的用户定义函数:https://github.com/y-ken/mysql-udf-base64 https://github.com/y-ken/mysql-udf-base64
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)