2017-08-24 47 views
3

我有以下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语句中插入回车符?

我正在使用SQL Server 2016

谢谢!

回答

3

如果您使用的是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

0

好问题。

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

至于你的问题,你可以添加一个回车和换行到你的文本,这会给你一个新的行。你不会在SSMS的数据模式下看到这一点(当你以表格形式看到结果时)。数据将与换行符一起存储,并在导出或以文本形式查看时显示。我个人发现,单独换行或回车并不总是能做到这一点(取决于您输出的位置),尽管每次都有组合。

尝试以下操作:

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

我能导出到Excel,CSV,甚至导入SSAS自始至终保持换行符。