2016-07-07 67 views
1

我想在mysql中使用AES加密文本,但我遇到了一个小问题,因为您需要使用varbinary来存储这些文本。如何使用varbinary如果我不知道我的文本的长度

我的一些数据类型是varchar,是的我可以计算出这些varbinary的长度。然而,对于我的地址字段,我使用TEXT数据类型,因为我们有中文地址存储,并且这些地址可能很长。我使用TEXT数据类型,因为你不需要在mysql中指定长度。

问题是,varbinary需要指定一个长度,而且我不知道长度,因为地址可以是任意长度。

是否有某种二进制数据类型可用于AES,我不需要指定数据的长度?

+1

您正在“blob”或二进制长对象之后。如果'varbinary'与charset-less等价于'varchar',那么'blob'就是'text'。 – Mjh

+0

谢谢。如果你留下你的评论作为答案,我可以为你投票 –

+1

@Mjh这是二进制*大*对象,如果我没有错。还有一个['MEDIUMBLOB'和'LARGEBLOB'](http://stackoverflow.com/a/5775601/589259),因此称它为二进制*长*对象可能会使读者感到困惑。否则,提示当然可以。 –

回答

2

根据意见 - 你需要BLOB数据类型,这是二进制大对象的简称(感谢Maarten Bodewes澄清)。

A BLOB数据类型不会存储具有该信息的字符集,并且相当于TEXT类型,没有字符集。正如评论中提到的,还有其他类型,如MEDIUMBLOB,TINYBLOB, LARGEBLOB,它们全都覆盖在MySQL's manual page之上。

相关问题