MySQL 的 HEX() 和 UNHEX() 等同于 Postgres?

标签 mysql sql postgresql

我正在将一些使用 MySQL 的工具转换为 PostgreSQL。有了这个,我遇到了很多问题,但能够找到大部分内容。我遇到问题的是 HEX()UNHEX()。我试过 encode(%s, 'hex')decode(%s, 'hex') 确实停止导致我有错误,但它仍然似乎没有成功。有谁知道这些函数在 Postgres 中的等价物是什么?

这是旧的 MySQL 查询:

SELECT HEX(test_table.hash),
       title,
       user,
       reason,
       description,
       url,
       performed,
       comment,
       authenticated,
       status
FROM alerts
JOIN user_responses ON test_table.hash = user_responses.hash
JOIN test_status ON test_table.hash = test_status.hash
WHERE status = %s

这是我更新后的 PostgreSQL 格式查询:

SELECT encode(test_table.hash, 'hex') as hash,
       title,
       user,
       reason,
       description,
       url,
       performed,
       comment,
       authenticated,
       status
FROM test_table
JOIN user_responses ON test_table.hash = user_responses.hash
JOIN test_status ON test_table.hash = test_status.hash
WHERE status = %s

谢谢!

最佳答案

create function hex(text) returns text language sql immutable strict as $$
  select encode($1::bytea, 'hex')
$$;

create function hex(bigint) returns text language sql immutable strict as $$
  select to_hex($1)
$$;

create function unhex(text) returns text language sql immutable strict as $$
  select encode(decode($1, 'hex'), 'escape')
$$;


select hex('abc'), hex(123), unhex(hex('PostgreSQL'));

结果:

╔════════╤═════╤════════════╗
║  hex   │ hex │   unhex    ║
╠════════╪═════╪════════════╣
║ 616263 │ 7b  │ PostgreSQL ║
╚════════╧═════╧════════════╝

这是 PostgreSQL:一切皆有可能 :)

关于MySQL 的 HEX() 和 UNHEX() 等同于 Postgres?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44813386/

相关文章:

sql - PostgreSQL - 选择具有更改值优化的列

sql - 从表中选择,名称存储在字段中

使用脚本进行 MySQL 身份验证,无需以纯文本形式提供密码

python - 拆分后与 Python 的缩进不一致

mysql - 安装 PHPMYADMIN 时遇到问题

java - 数据库选择与 java util 日期

mysql - 同时选择连接表行的计数和计数总和

sql - 在 Postgres 中,如何限制特定列的可能值?

sql - 为什么括号在 SELECT 查询中有效但在子查询中无效?

mysql - RDS MySQL Storage Full ...当数据库使用率低时