Oracle CHR函数实例详解

 更新时间:2026年06月13日 09:29:37   作者:Bert.Cai  
Oracle CHR函数将数值转换为对应字符,支持ASCII和Unicode 编码;常用于生成特殊控制字符和动态生成字母序列,本文给大家介绍Oracle CHR函数详解,感兴趣的朋友一起看看吧

Oracle ‌CHR‌函数用于将数值编码(如 ASCII 或 Unicode 码点)转换为对应的字符,是 ‌ASCII‌ 函数的逆运算 。‌‌

核心语法

  • 基础用法‌:CHR(n)返回数据库字符集中编码为 n 的字符,结果为 VARCHAR2 类型。
  • 指定国家字符集‌:CHR(n USING NCHAR_CS)返回国家字符集(National Character Set)中编码为 n 的字符,结果为 NVARCHAR2 类型 。‌‌

关键参数说明

  • n‌:数值表达式,代表字符的二进制编码值。
  • USING NCHAR_CS‌:可选子句,明确指定使用国家字符集进行转换 。‌‌

CHR 是 Oracle 中一个基础的字符串函数,它的作用是将数字代码转换为对应的字符,可以理解为 ASCII 函数的反函数。

📖CHR函数的语法与参数

CHR 函数的基本语法非常简洁:

CHR( n [ USING NCHAR_CS ] )
  • n (NUMBER):用于检索字符的数字代码。
  • USING NCHAR_CS (可选):若指定此子句,函数将使用数据库的“国家字符集”进行转换,并返回 NVARCHAR2 类型。若不指定,则默认使用“数据库字符集”(如 AL32UTF8),返回 VARCHAR2 类型。

⚙️参数n与返回值处理规则

  • NULL 值:如果参数为 NULL,函数返回 NULL。
  • 负数:如果参数为负数,函数将报错。
  • 单字节字符集:若参数 n 在 0 到 255 之间,返回其直接对应的字符。若 n > 256,则返回 n mod 256 所对应的字符。
  • 多字节字符集:参数 n 必须对应一个 完整的代码点(Code Point),例如在 AL32UTF8 下,CHR(41378) 才是一个有效字符。由无效代码点可能导致结果不确定。

🛠️常用场景与典型示例

1.🔧用于生成特殊控制字符

这是 CHR 最常用的场景,常与 || 拼接符结合使用,在 SQL 语句中直接构建包含特殊字符的字符串。

场景

ASCII码

CHR函数

说明

制表符

9

CHR(9)

用于文本水平对齐

换行符 (LF)

10

CHR(10)

在字符串内插入换行

回车符 (CR)

13

CHR(13)

常用于与换行符组合 (CHR(13)||CHR(10)),实现 Windows 风格的换行

空格

32

CHR(32)

在字符串中插入空格

单引号

39

CHR(39)

在 SQL 语句中表示单引号

双引号

34

CHR(34)

用于包裹动态生成的标识符

'&' 符号

38

CHR(38)

避免被 SQL*Plus 视为替换变量

'@' 符号

64

CHR(64)

用于邮件地址等场景

场景示例:格式化地址

SELECT name || CHR(10) || address_line1 || CHR(10) || city || ', ' || state AS full_address
FROM customers;

此语句将地址信息分行输出,提升可读性。

2.🔄ASCII码与字符互转

CHR 与 ASCII 函数功能相反,常用于字符编码的转换操作。

-- CHR 将数字转换为字符,ASCII 将字符转换为数字
SELECT CHR(65) as char_from_ascii, ASCII('A') as ascii_from_char FROM DUAL;
-- 结果: char_from_ascii: 'A', ascii_from_char: 65

场景示例:动态生成字母序列

-- 生成从 A 到 Z 的字母列表
SELECT CHR(LEVEL + 64) AS letter FROM DUAL CONNECT BY LEVEL <= 26;

此查询利用层次查询和 CHR 函数,巧妙地生成了字母表序列。

与 NCHR 的区别

若需处理国家字符集数据(如多语言 NVARCHAR2 字段),建议使用 ‌NCHR(n)‌,其等价于 CHR(n USING NCHAR_CS),确保字符集一致性 。‌‌

到此这篇关于Oracle CHR函数详解的文章就介绍到这了,更多相关Oracle CHR函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在Oracle关闭情况下如何修改spfile的参数

    在Oracle关闭情况下如何修改spfile的参数

    大家都知道在Oracle中pfile参数是可以手动更改的,但是spfile是二进制文件所以不可以手动更改,但我最近遇到了一个问题,修改参数错误,导致Oracle启动不了,一定要修改spfile该怎么办呢?下面通过这篇文章来一起看看吧。
    2016-12-12
  • Oracle PL/SQL中“表或视图不存在“错误的解决方案

    Oracle PL/SQL中“表或视图不存在“错误的解决方案

    在Oracle PL/SQL开发中,许多开发者都遇到过这个令人困惑的错误表或视图不存在,这个错误看似简单,但背后可能有多种原因,特别是当表确实存在时,这个错误更让人摸不着头脑,所以本文介绍了详细的解决方案,需要的朋友可以参考下
    2025-04-04
  • Oracle收缩减小表空间大小的方法详解

    Oracle收缩减小表空间大小的方法详解

    这篇文章主要介绍了Oracle收缩减小表空间大小的方法,比如我们发现一个表空间占用比较大,但是空闲空间很大,想要减小表空间占用大小,查看表空间的情况,文中有相关的代码示例和图文供大家参考,需要的朋友可以参考下
    2024-05-05
  • Oracle使用fy_recover_data恢复truncate删除的数据

    Oracle使用fy_recover_data恢复truncate删除的数据

    这篇文章主要介绍了Oracle使用fy_recover_data恢复truncate删除的数据,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07
  • Microsoft SQL Server 安全问题

    Microsoft SQL Server 安全问题

    Microsoft SQL Server 安全问题...
    2007-03-03
  • Oracle如何通过表名查询触发器

    Oracle如何通过表名查询触发器

    这篇文章主要介绍了Oracle如何通过表名查询触发器方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Oracle EBS数据库密码复杂度设置图文教程

    Oracle EBS数据库密码复杂度设置图文教程

    选择安全的密码并实施良好的密码策略是迄今为止防止基于密码的安全威胁的极为重要的防御措施,下面这篇文章主要给大家介绍了关于Oracle EBS数据库密码复杂度设置的相关资料,需要的朋友可以参考下
    2024-04-04
  • Oracle特有的DECODE函数的使用

    Oracle特有的DECODE函数的使用

    Oracle中的DECODE函数是一种条件表达式函数,本文主要介绍了Oracle特有的DECODE函数的使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08
  • Oracle数据库的实例/表空间/用户/表之间关系简单讲解

    Oracle数据库的实例/表空间/用户/表之间关系简单讲解

    这篇文章主要介绍了Oracle数据库的实例/表空间/用户/表之间关系简单讲解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 详解Oracle在out参数中访问光标

    详解Oracle在out参数中访问光标

    这篇文章主要介绍了详解Oracle在out参数中访问光标的相关资料,这里提供实例代码帮助大家学习理解这部分内容,希望能帮助到大家,需要的朋友可以参考下
    2017-08-08

最新评论