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

Oracle SQL中指定首字母缩略词的大写转换实现方法问询

Oracle SQL 实现指定缩略词大写转换

要实现只将字符串中的cnv、fha、rhs、va(不区分大小写)转换为大写,同时保留其他文本不变,你可以利用REGEXP_REPLACE结合反向引用和UPPER函数直接实现,无需复杂的PL/SQL函数组合。

基础实现(替换所有匹配项)

SELECT REGEXP_REPLACE('Bank of Nowhere - fha', '(cnv|fha|rhs|va)', UPPER('\1'), 1, 0, 'i') AS converted_text FROM dual;

参数说明

  • '(cnv|fha|rhs|va)':用括号将目标缩略词分组,\1代表匹配到的具体缩略词
  • UPPER('\1'):将匹配到的缩略词动态转换为对应大写形式
  • 1:从字符串第1个字符开始匹配
  • 0:替换所有匹配到的缩略词(如果只需要替换第一个匹配项,改为1即可)
  • 'i':开启不区分大小写匹配,确保fHa、cNv这类混合大小写的缩略词也能被识别转换

测试示例

  • 输入:'Bank of Nowhere - cnv' → 输出:'Bank of Nowhere - CNV'
  • 输入:'Bank of rhs Nowhere - va' → 输出:'Bank of RHS Nowhere - VA'
  • 输入:'fHa cNv Va test' → 输出:'FHA CNV VA test'

进阶:避免替换单词内的缩略词

如果需要确保只替换独立的缩略词(比如不替换cnvbank里的cnv),可以给正则添加边界匹配,确保缩略词前后是非字母字符或字符串首尾:

SELECT REGEXP_REPLACE('cnvbank test - fha', '([^a-zA-Z]|^)(cnv|fha|rhs|va)([^a-zA-Z]|$)', '\1' || UPPER('\2') || '\3', 1, 0, 'i') AS converted_text FROM dual;

这个语句会跳过cnvbank中的cnv,只转换独立的fha为FHA。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 16:53:16