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

Oracle SQL Developer中不使用INITCAP实现指定驼峰格式转换

Oracle 非INITCAP实现自定义驼峰格式转换方案

转换规则

  • 仅字符串首位、空格后的第一个字符转为大写
  • 其余所有位置的字符统一转为小写,撇号后的字符不触发大写逻辑
  • 同时兼容带撇号、不带撇号的全大写字符串输入场景

验证标准

两个测试用例需全部通过:

  1. 输入值 RAKE'SH RE'DD'Y,预期输出 Rake'sh Re'dd'y,原生INITCAP返回的Rake'Sh Re'Dd'Y不符合要求
  2. 输入值 RAKESH REDDY,预期输出 Rakesh Reddy,和原生INITCAP返回结果一致

实现SQL

实现逻辑逐字符遍历判断,仅当字符位于串首、或前序字符为空格时转大写,其余字符统一转小写,从根源上避免撇号触发大写的问题,Oracle 11g及以上版本可直接运行:

WITH char_process AS (
    SELECT
        source_str,
        LEVEL AS pos,
        CASE
            WHEN LEVEL = 1 OR SUBSTR(source_str, LEVEL - 1, 1) = ' '
            THEN UPPER(SUBSTR(source_str, LEVEL, 1))
            ELSE LOWER(SUBSTR(source_str, LEVEL, 1))
        END AS target_char
    FROM (
        -- 此处可替换为业务表查询,source_str对应需要转换的字段
        SELECT 'RAKE''SH RE''DD''Y' AS source_str FROM dual
    )
    CONNECT BY LEVEL <= LENGTH(source_str)
)
SELECT LISTAGG(target_char, '') WITHIN GROUP (ORDER BY pos) AS convert_result
FROM char_process;

适配说明

  • 对接业务表时,将内层子查询的dual表替换为业务表,source_str替换为实际存储待转换内容的字段即可
  • 如果源数据存在连续多个空格的情况,可提前用正则做预处理,将source_str替换为REGEXP_REPLACE(你的字段名, '\s+', ' ')即可避免多空格导致的异常大写

内容的提问来源于stack exchange,提问作者dinesh venkat vasamsetti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:30:59