PostgreSQL中pg_proc表prosrc字段内的\r字符具体含义是什么
\r的具体含义
\r是回车符(Carriage Return,缩写CR),是ASCII编码中值为0x0D的控制字符,它和我们更常见的\n(换行符,Line Feed,缩写LF,ASCII值0x0A)都属于文本控制字符,最早来源于老式打字机的操作逻辑:
- 回车符
\r的作用是将输入光标移动到当前行的最左侧 - 换行符
\n的作用是将输入光标向下移动一行
不同操作系统的默认换行标识规则存在差异:
- Windows系统默认使用
\r\n(CR+LF组合)作为换行标识 - 类Unix系统(Linux、新版macOS等)默认使用
\n(单独LF)作为换行标识 - 旧版macOS(OS 9及更早版本)默认使用
\r(单独CR)作为换行标识
它出现在prosrc字段中的原因
这个字符是你创建函数时的源代码文本本身就携带的内容,和PostgreSQL的存储逻辑没有关系:
- 你当初编写/复制这个PL/pgSQL函数代码时,使用的设备或者文本编辑器是Windows环境,代码里的换行默认就是
\r\n组合格式 - 根据官方对
prosrc字段的说明,对于解释型语言的函数,这个字段会原封不动存储函数的源代码文本,不会主动修改、过滤文本里的控制字符,所以写入时的\r就被完整保留了下来 - 你查询时看到的
\r转义形式,是SQL客户端的展示逻辑:为了让你能感知到不可见的控制字符,客户端把原生的不可见回车符转成了可显示的\r转义序列,实际数据库存储的是原生的控制字符本身。
你把这段内容导出到支持CR+LF换行的文本编辑器中打开时,这些\r会被正常识别为换行的组成部分,不会以转义字符的形式显示。
内容的提问来源于stack exchange,提问作者jian
相关产品推荐
相关产品推荐

