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

如何不使用REPLACE函数去除SQL查询字段内的特殊字符

重音字符批量转无重音格式实现方案

失效原因说明

你此前使用的Cyrillic_General_CI_AI是西里尔语系专用排序规则,仅对俄语等西里尔字符生效,无法处理法语、西语等带重音的拉丁字符,因此执行后无转换效果。

分数据库实现方案

所有方案均支持50万行级数据批量处理,无需提前定位特殊字符位置,转换后可统一转为你示例要求的大写无重音格式。

1. SQL Server 环境

查询转换示例:

SELECT 
    UPPER(COLLEGE_NAME COLLATE SQL_Latin1_General_CP1_CI_AI) AS COLLEGE_NAME_CLEAN
FROM SCHOOLS

永久更新字段内容示例:

UPDATE SCHOOLS
SET COLLEGE_NAME = UPPER(COLLEGE_NAME COLLATE SQL_Latin1_General_CP1_CI_AI)
  • 规则说明:SQL_Latin1_General_CP1_CI_AI中的AI代表重音不敏感,转换时自动将带重音的拉丁字符替换为对应无重音版本,外层UPPER函数统一转换为大写。

2. MySQL 环境

查询转换示例:

SELECT 
    UPPER(CONVERT(COLLEGE_NAME USING utf8mb4) COLLATE utf8mb4_general_ci) AS COLLEGE_NAME_CLEAN
FROM SCHOOLS

永久更新字段内容示例:

-- 先修改字段排序规则
ALTER TABLE SCHOOLS MODIFY COLUMN COLLEGE_NAME VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- 批量更新为大写无重音格式
UPDATE SCHOOLS SET COLLEGE_NAME = UPPER(COLLEGE_NAME);

3. PostgreSQL 环境

首先开启unaccent扩展:

CREATE EXTENSION IF NOT EXISTS unaccent;

查询转换示例:

SELECT 
    UPPER(unaccent(COLLEGE_NAME)) AS COLLEGE_NAME_CLEAN
FROM SCHOOLS

永久更新字段内容示例:

UPDATE SCHOOLS
SET COLLEGE_NAME = UPPER(unaccent(COLLEGE_NAME));

4. Oracle 环境

查询转换示例:

SELECT 
    UPPER(UTL_I18N.TRANSLITERATE(COLLEGE_NAME, 'US7ASCII', 'UTF8')) AS COLLEGE_NAME_CLEAN
FROM SCHOOLS

永久更新字段内容示例:

UPDATE SCHOOLS
SET COLLEGE_NAME = UPPER(UTL_I18N.TRANSLITERATE(COLLEGE_NAME, 'US7ASCII', 'UTF8'));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 09:36:04