Ara*_*yan 6 postgresql postgres-9.6
我正在尝试使用 Postgresqlencode() 函数并将一些其他函数作为参数。我收到错误,但我不明白为什么。
我在 Windows 上使用 Postgres 9.6.14。
698d51a19d8a121ce581499d7b701668select md5('111');
Run Code Online (Sandbox Code Playgroud)
select encode('698d51a19d8a121ce581499d7b701668', 'base64');
Run Code Online (Sandbox Code Playgroud)
"ERROR: function encode(text, unknown) does not exist"select encode(md5('111'), 'base64');
Run Code Online (Sandbox Code Playgroud)
select encode(concat('1', '11'), 'base64');
Run Code Online (Sandbox Code Playgroud)
select md5(concat('1', '11'))
Run Code Online (Sandbox Code Playgroud)
那么请求 3 和 4 以及整体功能有什么问题呢encode()?
看看 的定义encode:
\df encode
List of functions
Schema | Name | Result data type | Argument data types | Type
------------+--------+------------------+---------------------+------
pg_catalog | encode | text | bytea, text | func
(1 row)
Run Code Online (Sandbox Code Playgroud)
第一个参数必须是bytea,即二进制字节字符串。
您的前两个查询之所以有效,是因为字符串文字的类型为unknown,可以隐式转换为bytea。
在不起作用的查询中,您使用的是函数md5和concat,它们都具有text结果类型。text现在和之间没有隐式转换bytea,因此出现错误消息。
为了实现这一点,您必须引入显式类型转换:
select encode(CAST(md5('111') AS bytea), 'base64');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3555 次 |
| 最近记录: |