这可能是重复的,但在很长一段时间后我一直无法真正找出如何做到这一点。
我想要做的只是往返一个二进制值。我选择它,然后将其粘贴到另一个 SQL 查询中。
IE
- 我有一个有列的表
id, data
- 我在 Azure Data Studio 中使用 postgres 扩展运行此查询:
select id, data from mytable
- 输出窗口显示了这个
id data
58 b'\xaa\xb6\x87|-x\xf6\xd1\x80\xec\xd2\xed\x91\x1ebd\x924g\xcd\xaeVZ\x01\xf2\xa0\xb3\xd8\x16\xe1fC'
现在我正在尝试做第二个查询,我计算与那个匹配的东西。
select count(*) from mytable where data = b'\xaa\xb6\x87|-x\xf6\xd1\x80\xec\xd2\xed\x91\x1ebd\x924g\xcd\xaeVZ\x01\xf2\xa0\xb3\xd8\x16\xe1fC'
我收到错误消息“\”不是有效的二进制数字
我发现的大多数文档和其他东西似乎都建议使用E'...'::bytea
语法,所以我这样做:
select count(*) from mytable where data = E'\xaa\xb6\x87|-x\xf6\xd1\x80\xec\xd2\xed\x91\x1ebd\x924g\xcd\xaeVZ\x01\xf2\xa0\xb3\xd8\x16\xe1fC'::bytea
我收到错误消息invalid byte sequence for encoding "UTF8": 0xaa
我已经尝试过该decode
功能,因为其他事情表明:
select count(*) from mytable where data = decode('\xaa\xb6\x87|-x\xf6\xd1\x80\xec\xd2\xed\x91\x1ebd\x924g\xcd\xaeVZ\x01\xf2\xa0\xb3\xd8\x16\xe1fC', 'escape')
并且失败,错误类型为 bytea 的输入语法无效
为什么二进制数据的输出格式不是有效的输入格式?希望这不仅仅是 Azure Data Studio 奇怪 :-(