PGSQL 查询结果自定义字符集为utf8mb4_0900_ai_ci
时间: 2023-07-28 14:17:19 浏览: 87
在 PGSQL 中,没有直接的内置字符集支持utf8mb4_0900_ai_ci。但是,可以通过使用 COLLATE 关键字指定一个自定义的排序规则来间接实现utf8mb4_0900_ai_ci。
例如,以下查询将会以utf8mb4_0900_ai_ci字符集对查询结果进行排序:
SELECT column_name FROM table_name ORDER BY column_name COLLATE "utf8mb4_0900_ai_ci";
其中,column_name 为需要排序的列名,table_name 为表名,"utf8mb4_0900_ai_ci"为自定义的排序规则名称。
需要注意的是,虽然可以通过 COLLATE 关键字实现类似于utf8mb4_0900_ai_ci的排序规则,但由于 PGSQL 没有直接的支持,因此可能会出现一些问题。建议在存储数据时就使用正确的字符集和排序规则,避免后续转换带来的问题。
相关问题
PGSQL 查询结果自定义字符集
在 PGSQL 中,可以通过使用 CAST 函数将查询结果转换为指定的字符集。例如:
SELECT CAST(column_name AS VARCHAR(100) CHARACTER SET charset) FROM table_name;
其中,column_name 为需要转换字符集的列名,table_name 为表名,charset 为目标字符集名称。
需要注意的是,转换字符集可能会导致数据丢失或乱码,因此需要谨慎使用。建议在存储数据时就使用正确的字符集,避免后续转换带来的问题。
CREATE TABLE bi_sys_role_auth_res ( pkid varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色和资源对应记录唯一id_', role_pkid varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色资源的主键role_pkid', res_pkid varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '资源记录的主键', res_type varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '资源的类型', update_user varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改人', update_time varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改时间 ', PRIMARY KEY (pkid) USING BTREE, UNIQUE KEY uk_pkid (pkid) USING BTREE, KEY auth_role_res_role_pkid (role_pkid) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='角色-业务资源-关系表';转换成pgsql建表语句
以下是将该 SQL 语句转换为 PostgreSQL 建表语句的结果:
CREATE TABLE bi_sys_role_auth_res (
pkid varchar(30) COLLATE "utf8mb4_general_ci" NOT NULL COMMENT '角色和资源对应记录唯一id_',
role_pkid varchar(30) COLLATE "utf8mb4_general_ci" NOT NULL COMMENT '角色资源的主键role_pkid',
res_pkid varchar(30) COLLATE "utf8mb4_general_ci" NOT NULL COMMENT '资源记录的主键',
res_type varchar(100) COLLATE "utf8mb4_general_ci" NOT NULL COMMENT '资源的类型',
update_user varchar(30) COLLATE "utf8mb4_general_ci" DEFAULT NULL COMMENT '修改人',
update_time varchar(100) COLLATE "utf8mb4_general_ci" DEFAULT NULL COMMENT '修改时间 ',
PRIMARY KEY (pkid),
UNIQUE (pkid),
CONSTRAINT auth_role_res_role_pkid UNIQUE (role_pkid)
) WITH (OIDS=FALSE)
TABLESPACE pg_default;
COMMENT ON TABLE bi_sys_role_auth_res IS '角色-业务资源-关系表';
由于 PostgreSQL 中没有使用 ENGINE 参数指定表引擎,因此将其移除。同时,将字符集和排序规则参数 COLLATE 放置在字段类型后面,并且将 UNIQUE KEY 转换为 UNIQUE 约束,将 KEY 转换为 CONSTRAINT。最后,添加了一些 PostgreSQL 特有的参数,如 WITH (OIDS=FALSE) 和 TABLESPACE。
阅读全文
相关推荐
















