尝试理解 SQL Server 中的 CHAR(10) 和 CHAR(13)

问题描述 投票:0回答:1

我读过很多文章解释 CHAR(10) 和 CHAR(13) 实际上是什么。

我对 CHAR(10) 没有任何问题,它只是换行或新行。

我不明白 CHAR(13) 在 SQL Server 中的行为方式。

参见下面的简单代码:

案例 1 - 简单的换行
案例 2 - 又是一条新线。但为什么呢?
案例 3 - 2 条新线。假设 char(10) 和 char(13) 分别返回一个新行(情况 2)。
案例 4 - 为什么只有 1 个新行?

PRINT '----------Case 1----------'
DECLARE @str1 nVarchar(MAX) = 'Hello' + CHAR(10) + 'World'
PRINT @str1
PRINT '----------Case 2----------'
DECLARE @str2 nVarchar(MAX) = 'Hello' + CHAR(13) + 'World'
PRINT @str2
PRINT '----------Case 3----------'
DECLARE @str3 nVarchar(MAX) = 'Hello' + CHAR(10) + CHAR(13) + 'World'
PRINT @str3
PRINT '----------Case 4----------'
DECLARE @str4 nVarchar(MAX) = 'Hello' + CHAR(13) + CHAR(10) + 'World'
PRINT @str4
PRINT '----------END----------'

See this screenshot:

sql-server tsql ascii
1个回答
-1
投票

在 SQL Server 中,CHAR(13) 表示回车符。回车符 (CR) 是一个控制字符,它使文本光标移动到当前行的开头。它通常与换行符 (CHAR(10)) 结合使用,表示一行的结束和新一行的开始,从而在文本文档中形成新行。

CHAR(13) 和 CHAR(10) 的组合(通常表示为“ ") 在基于 Windows 的操作系统中通常用作换行符序列。当您在 SQL Server 中的字符串中插入或连接这些字符时,您会创建换行符效果,类似于按键盘上的“Enter”键。

例如,如果您有这样的 SQL 查询:

SELECT 'Line 1' + CHAR(13) + CHAR(10) + 'Line 2'

结果将是一个包含两行的字符串,如下所示:

1号线 2号线

在某些情况下,您可能会遇到仅使用 CHAR(13) 可能不会在视觉上产生换行效果的情况,特别是在某些客户端应用程序中或在不同上下文中显示数据时。发生这种情况是因为换行符的显示可能会受到呈现数据的应用程序或环境的影响。

请记住,换行符的行为可能会因您使用的平台或应用程序而异。在类 Unix 系统中,单个 LF (CHAR(10)) 通常足以表示新行。在 Windows 中,CR (CHAR(13)) 和 LF (CHAR(10)) 的组合用于换行符。在较旧的 Mac 系统中,单独使用 CR (CHAR(13))。在不同环境中处理文本数据时,了解这些差异非常重要。

© www.soinside.com 2019 - 2024. All rights reserved.