在MySQL数据库中存储base64编码值的最佳方式


Best way to store a base64 encoded value in MySQL DB?

我有一个值想存储在我的DB中,排序规则对像这样的字符串有什么不同吗

YToyOntzOjIwOiJUeXBlX29mX29yZ2FuaXNhdGlvbiI7czoyMDoiTWVtYmVyIG9mIFBhcmxpYW1lbnQiO3M6ODoiUG9zdGNvZGUiO3M6NzoiUEUxIDFKQSI7fQ==

可能被储存?此外,我似乎能够将这些值写入DB的唯一方法是使用BLOB,这似乎是一种非常错误的存储方式

只有当您需要ORDER BY或搜索列时,排序规则才会起作用。这些base64编码的项目可能不会被搜索或排序。

如果你的编码项目的长度保证小于64K字节,那么定义你的列如下:

   `columnname` TEXT CHARACTER SET ascii,

这正是base64编码变量所需要的;编码过程将所有内容转换为可显示的ASCII。

如果项目的长度小于16兆字节,但有些项目的长度超过64k,请使用MEDIUMTEXT而不是TEXT

编辑多年后。

OQ编码的字符串经过解码,是一个序列化的php对象:

a:2:{s:20:"Type_of_organisation";s:20:"Member of Parliament";s:8:"Postcode";s:7:"PE1 1JA";}

观察1:使用utf8或utf8mb4字符集,许多这样的东西在没有编码的情况下存储在文本列中。很多?对WordPress以这种方式存储选项数据。

观察2:如果可以翻译成JSON,那么可以使用MySQL最新版本中的JSON数据类型。JSON搜索仍然不可搜索,但它们是结构化的。