【问题标题】:MYSQL | ENCODE() outputs blob instead of textMYSQL | ENCODE() 输出 blob 而不是文本
【发布时间】:2015-10-29 03:22:53
【问题描述】:

我试图通过 ENCODE() 函数编码一个简单的字符串。使用字符串它给我文本作为输出。但是使用一个字段它给了我 BLOB。如何绕过 BLOB 并为编码字段输出文本?

会发生以下情况:

SELECT ENCODE('myText,'myPw')
- 输出: baddade4b04e // Goal = This + using fieldname

SELECT ENCODE(Field,'myPw') FROM myTable
- 输出:[BLOB - 14B]


我的尝试:

SELECT CAST(ENCODE(Field,'myPw') AS CHAR(1000) CHARACTER SET utf8) FROM myTable
- 输出:空行!

SELECT CONVERT(ENCODE(Field,'myPw') USING utf8) FROM myTable
- 输出:%(输出为1-2个字符,不能正确)

假设我有一个专栏user。现在我希望“PaulPeter”被编码为相同,无论我是对字符串“PaulPeter”还是字段user进行编码,其中值为“PaulPeter”。

谁能给我解释一下?非常感谢!

加密字符串:

加密字段:

MySQL-Client-Version:5.5.41
usertext utf8_bin


编辑:

我在这里根据解码得到另一个问题:Click
在能够编码后,我遇到了与 AES_Encryption 相同的问题。当我加密一个字符串时,我得到一个字符串的输出。使用字符串值加密字段时,我得到 blob。 :( 太烦人了。

【问题讨论】:

  • 无法复制。两者都给我 BLOB。 MySQL 5.1.something.
  • 也许这就是问题所在?我在这里 5.5.41。将其添加到我的问题中。无论如何感谢您的尝试。

标签: mysql text encoding utf-8 blob


【解决方案1】:

您的用户列是 TEXT 类型。尝试仅将该列转换为 CHAR:

SELECT AES_ENCRYPT(CAST(Field AS CHAR(1000)),'myPw') FROM myTable

【讨论】:

  • 这个想法是对的。接受我的编辑,这样我们就可以关闭这个。 :) 非常感谢!
  • 没有编辑,原始代码。我将删除我上面的​​评论以避免混淆。
  • 啊好吧。我只是想把自己吊死以摆脱版本差异哈哈。再次感谢。
猜你喜欢
  • 1970-01-01
  • 2013-06-21
  • 1970-01-01
  • 1970-01-01
  • 2018-05-06
  • 1970-01-01
  • 1970-01-01
  • 2016-07-10
  • 2021-03-20
相关资源
最近更新 更多