SQL Developer中如何批量删除某列所有行字符串末尾3位字符
Oracle SQL Developer 移除字符串末尾3位字符实现方案
SQL Developer 主要适配Oracle数据库,直接使用内置字符串函数即可完成需求,分两种常见使用场景:
- 仅查询时返回裁剪后的结果,不修改原表数据
核心使用SUBSTR截取字符串,搭配LENGTH获取字符串总长度,截取从第一位开始、长度为「总长度-3」的片段即可:
针对你给出的示例值SELECT -- 可按需添加其他需要查询的字段 SUBSTR(Colum2, 1, LENGTH(Colum2) - 3) AS trimmed_Colum2 FROM 你实际的业务表名;Karim_bk,该语句计算总长度为8,截取前5位,正好返回目标结果Karim。
如果存在字段长度小于3的异常行,上述写法会返回空值,需要保留原值的话可以加判断逻辑:SELECT CASE WHEN LENGTH(Colum2) >= 3 THEN SUBSTR(Colum2, 1, LENGTH(Colum2) - 3) ELSE Colum2 END AS trimmed_Colum2 FROM 你实际的业务表名; - 需要永久修改表中Colum2字段的原始值
先执行查询语句校验裁剪结果,确认无误后再执行更新,避免误改数据:-- 第一步:预校验结果 SELECT Colum2 AS original_value, SUBSTR(Colum2, 1, LENGTH(Colum2) - 3) AS expect_value FROM 你实际的业务表名; -- 第二步:校验通过后执行更新 UPDATE 你实际的业务表名 SET Colum2 = SUBSTR(Colum2, 1, LENGTH(Colum2) - 3); -- 第三步:确认更新结果符合预期后提交,结果不对可执行ROLLBACK回滚 COMMIT;
如果你用SQL Developer连接的是其他类型数据库,逻辑通用,仅需调整对应函数名即可:比如MySQL可直接复用上述Oracle写法;SQL Server需要将
SUBSTR替换为SUBSTRING、LENGTH替换为LEN。
内容的提问来源于stack exchange,提问作者Karim Solieman
相关产品推荐
相关产品推荐

