MySQL中CONVERT(0x4f6765 using utf8mb4)的PostgreSQL等效写法咨询
PostgreSQL中等效于MySQL
CONVERT(0x4f6765 using utf8mb4) 的实现方法 PostgreSQL没有和MySQL完全一致的语法,不过可以通过以下两种方式实现相同的功能:
方法1:使用bytea字面量 + convert_from函数
直接用PostgreSQL的bytea类型字面量(用\x前缀代替MySQL的0x),再通过convert_from函数转换为UTF8文本:
SELECT convert_from('\x4f6765'::bytea, 'utf8');
执行后会返回结果 Oge,和MySQL语句的输出一致。
方法2:使用decode函数处理十六进制字符串
如果你的十六进制是以字符串形式存在(比如'4f6765'),可以先用decode把它转成bytea,再转文本:
SELECT convert_from(decode('4f6765', 'hex'), 'utf8');
补充说明
- PostgreSQL的
utf8编码等价于MySQL的utf8mb4,因为PostgreSQL的UTF8支持所有Unicode字符(包括四字节的emoji等),不需要单独指定utf8mb4。 - 你原来用的
CAST(0x4f6765 using utf8mb4)会报错,是因为PostgreSQL不识别0x开头的十六进制字面量,也不支持这种CAST语法,必须先把十六进制转换成bytea类型,再转文本。
内容的提问来源于stack exchange,提问作者vasu
相关产品推荐
相关产品推荐

