You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PostgreSQL非Unicode数据库中用编码值插入字符?

问题描述

已通过以下SQL在PostgreSQL中创建编码为EUC_CN的数据库和表:

CREATE DATABASE pg_euc_cn WITH ENCODING = 'EUC_CN' LC_COLLATE = 'C' LC_CTYPE = 'C' TEMPLATE=template0;

CREATE TABLE t1 (VALUE VARCHAR(3));

需求是不直接插入字符'单',而是通过其EUC-CN编码值B5A5或Unicode码点5355将其插入t1表,但尝试以下语句均未生效:

insert into t1 values (x'B5A5')
insert into t1 values (0xB5BA)

需要正确的插入语句。

正确的插入语句

1. 通过EUC-CN编码值B5A5插入

x'B5A5'返回的是字节串类型,需要显式转换为当前数据库编码(EUC_CN)对应的字符串,使用convert_from函数即可:

INSERT INTO t1 VALUES (convert_from(x'B5A5', 'EUC_CN'));

2. 通过Unicode码点5355插入

有两种可行的方式:

  • 方式一:使用U&语法
    直接指定Unicode码点,格式为U&'\码点值':
INSERT INTO t1 VALUES (U&'\5355');
  • 方式二:使用chr函数配合编码转换
    先通过chr函数生成Unicode字符,再转换为数据库的EUC_CN编码:
INSERT INTO t1 VALUES (convert_to(chr(0x5355), 'EUC_CN'));

内容的提问来源于stack exchange,提问作者Xin Zhang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 16:50:22