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

创建去除字符串中汉字的表失败,报错无法转换UTF8字符至ASCII

问题描述

尝试执行以下SQL语句创建表xx,目的是去掉字符串里的汉字:

create table xx as
SELECT REPLACE(CONVERT('汽车检测仪 AUTO' USING ascii), '?', '')

结果出现报错:

Query 1: Cannot convert 'utf8' character 0xE6898B to 'ascii'

解决方案

直接把UTF8汉字转成ASCII肯定会报错,因为汉字不在ASCII字符集的覆盖范围内,转换时会触发字符无法映射的错误。换个思路,用正则表达式直接匹配并移除汉字就行,不用绕字符集转换的弯路。

以MySQL为例,用REGEXP_REPLACE函数匹配Unicode汉字的范围([\u4e00-\u9fa5]),把匹配到的汉字替换成空字符串:

CREATE TABLE xx AS
SELECT REGEXP_REPLACE('汽车检测仪 AUTO', '[\u4e00-\u9fa5]', '') AS cleaned_str;

如果是PostgreSQL这类数据库,语法类似,只需加上全局替换的参数:

CREATE TABLE xx AS
SELECT REGEXP_REPLACE('汽车检测仪 AUTO', '[\u4e00-\u9fa5]', '', 'g') AS cleaned_str;

这种方法直接针对汉字字符精准匹配移除,既避免了字符集转换的错误,也能准确实现你去除汉字的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 12:40:29