关于这个话题,我没有看到任何类似的问题,我必须为我现在正在做的事情研究这个问题。我想我应该把答案贴出来以防其他人也有同样的问题。
当前回答
在某些特殊情况下,你可能会发现这很有用(例如在MS Report中呈现cell-content) 例子:
select * from
(
values
('use STAGING'),
('go'),
('EXEC sp_MSforeachtable
@command1=''select ''''?'''' as tablename,count(1) as anzahl from ? having count(1) = 0''')
) as t([Copy_and_execute_this_statement])
go
其他回答
在某些特殊情况下,你可能会发现这很有用(例如在MS Report中呈现cell-content) 例子:
select * from
(
values
('use STAGING'),
('go'),
('EXEC sp_MSforeachtable
@command1=''select ''''?'''' as tablename,count(1) as anzahl from ? having count(1) = 0''')
) as t([Copy_and_execute_this_statement])
go
所有这些选项都可以工作,这取决于您的情况,但如果您使用SSMS(正如在一些评论中提到的SSMS隐藏CR/ lf),您可能看不到它们中的任何一个工作。
所以,与其开车去拐弯,不如检查一下这个设置
工具|选项
我想说的
concat('This is line 1.', 0xd0a, 'This is line 2.')
or
concat(N'This is line 1.', 0xd000a, N'This is line 2.')
在SSMS中运行这个,它显示了SQL中的换行符本身是如何成为字符串值的一部分的:
PRINT 'Line 1
Line 2
Line 3'
PRINT ''
PRINT 'How long is a blank line feed?'
PRINT LEN('
')
PRINT ''
PRINT 'What are the ASCII values?'
PRINT ASCII(SUBSTRING('
',1,1))
PRINT ASCII(SUBSTRING('
',2,1))
结果: 1号线 第2行 3号线
一个空换行有多长? 2
ASCII值是什么? 13 10
或者如果你更愿意在一行中指定字符串(几乎!),你可以像这样使用REPLACE()(可选地使用CHAR(13)+CHAR(10)作为替换):
PRINT REPLACE('Line 1`Line 2`Line 3','`','
')
我来这里是因为我担心我在c#字符串中指定的cr-lfs没有在SQl Server Management Studio查询响应中显示。
事实证明,它们确实存在,但没有被展示出来。
要“查看”cr-lfs,使用如下的打印语句:
declare @tmp varchar(500)
select @tmp = msgbody from emailssentlog where id=6769;
print @tmp
推荐文章
- 如何从一个查询插入多行使用雄辩/流利
- 如何连接列在Postgres选择?
- 有人可以对SQL查询进行版权保护吗?
- 如何知道MySQL表最近一次更新?
- 如何转储一些SQLite3表的数据?
- 如何检查SQL Server文本列是否为空?
- 如何创建一个SQL Server函数“连接”多行从一个子查询到一个单独的分隔字段?
- 在MySQL中的一个查询中更新多个具有不同值的行
- 在SQL中更新多个列
- 如何删除表中特定列的第一个字符?
- MySQL OR与IN性能
- 哪个更快/最好?SELECT *或SELECT columnn1, colum2, column3等
- GROUP BY with MAX(DATE)
- 删除id与其他表不匹配的sql行
- 等价的限制和偏移SQL Server?