在 Case 表达式结果中插入换行符 SQL

Insert Line break in Case expression result SQL

我有以下 Case 表达式:

SELECT 
    CASE 
       WHEN item = '662627-4' 
          THEN 'KLX Licensed & BOM CONTAINS KLX LICENSED PART(S)'
          ELSE NULL

结果如下:

KLX Licensed & BOM CONTAINS KLX LICENSED PART(S)

我想让它像这样显示在两行中:

KLX Licensed &
BOM CONTAINS KLX LICENSED PART(S)`

这可能吗? case语句中是否有插入回车return的字符?

我正在使用 SQL Server 2016。

如果您使用的是 SSMS:您不会在结果网格中看到差异,但如果您将结果设置为文本(快捷键:Ctrl+T),您就会看到差异。

SELECT CASE WHEN item = '662627-4' THEN 'KLX Licensed & '+char(10)+'BOM CONTAINS KLX LICENSED PART(S)'
           ELSE NULL end

SELECT CASE WHEN item = '662627-4' THEN 'KLX Licensed &
BOM CONTAINS KLX LICENSED PART(S)'
           ELSE NULL end

rextester 演示:http://rextester.com/YWD92075

好问题。

在我们回答之前先评论一下:您的代码示例不会执行,仅仅是因为 CASE 语句需要有 END 关键字来表示 CASE 语句的结尾。

至于您的问题,您可以在文本中添加一个回车符 return 和换行符,这将为您换行。您不会在 SSMS 的数据模式中看到这一点(当您以表格形式查看结果时)。数据将与换行符一起存储,并在导出或以文本形式查看时显示。我个人发现单独使用换行符或回车符 return 并不总能解决问题(取决于您将其导出到哪里),尽管这种组合每次都能奏效。

尝试以下操作:

SELECT 
    CASE 
       WHEN item = '662627-4' 
          THEN 'KLX Licensed &'+CHAR(10)+CHAR(13)+' BOM CONTAINS KLX LICENSED PART(S)'
          ELSE NULL

我能够导出到 Excel、CSV 甚至导入到 SSAS,同时保持换行符。