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

Oracle SQL中如何将数字转换为带圈数字?(如1转①、20转⑳)

Oracle SQL 数字转带圈数字实现方案

实现原理

1~20的带圈数字在Unicode编码中为连续序列,数字1对应编码为U+2460(十进制值9312),数字N(1≤N≤20)对应的带圈字符编码为 9311 + N,通过Oracle的Unicode字符转换函数即可直接生成对应字符。

单语句直接转换写法

适合单次使用场景,直接在查询语句中嵌入转换逻辑即可:

SELECT 
  CASE
    WHEN num_col BETWEEN 1 AND 20 THEN CHR(9311 + num_col USING NCHAR_CS)
    ELSE TO_CHAR(num_col) -- 超出1-20范围时返回原数字字符串,可根据需求调整逻辑
  END AS circled_num
FROM your_table;

效果测试

-- 测试1和20的转换效果
SELECT
  CHR(9311 + 1 USING NCHAR_CS) AS num_1,
  CHR(9311 + 20 USING NCHAR_CS) AS num_20
FROM DUAL;

返回结果:num_1 = ①,num_20 = ⑳

封装为自定义函数(复用场景)

如果需要频繁调用该转换逻辑,可封装为存储函数全局使用:

CREATE OR REPLACE FUNCTION TO_CIRCLED_NUM(p_num NUMBER)
RETURN NVARCHAR2
IS
BEGIN
  IF p_num BETWEEN 1 AND 20 THEN
    RETURN CHR(9311 + p_num USING NCHAR_CS);
  ELSE
    -- 超出1-20范围的处理逻辑,可自行修改
    RETURN TO_NCHAR(p_num);
  END IF;
END;
/

函数调用示例

SELECT TO_CIRCLED_NUM(5) FROM DUAL; -- 返回 ⑤
SELECT TO_CIRCLED_NUM(12) FROM DUAL; -- 返回 ⑫

注意:如果查询结果出现乱码,可确认数据库NLS_NCHAR_CHARACTERSET参数配置为AL16UTF16或UTF8,确保支持Unicode字符展示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 16:24:03