关于这个话题,我没有看到任何类似的问题,我必须为我现在正在做的事情研究这个问题。我想我应该把答案贴出来以防其他人也有同样的问题。
当前回答
我来这里是因为我担心我在c#字符串中指定的cr-lfs没有在SQl Server Management Studio查询响应中显示。
事实证明,它们确实存在,但没有被展示出来。
要“查看”cr-lfs,使用如下的打印语句:
declare @tmp varchar(500)
select @tmp = msgbody from emailssentlog where id=6769;
print @tmp
其他回答
在某些特殊情况下,你可能会发现这很有用(例如在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
推荐文章
- 如何使用SQL Server 2008做多个CASE WHEN条件?
- 计数在VARCHAR字段中字符串的出现次数?
- 如何选择多行填充常量?
- 修改一个MySQL列为AUTO_INCREMENT
- 如果没有使用EXISTS引入子查询,则只能在选择列表中指定一个表达式
- SQL Server -事务回滚错误?
- 如何在SQL中有效地计数列值的发生?
- 查询以列出数据库中每个表中的记录数量
- PostgreSQL列名区分大小写吗?
- 在WHERE子句中引用列别名
- 存储图像在SQL Server?
- 列出在SQL Server上运行的查询
- 恢复未保存的SQL查询脚本
- 存储值为> 24:00:00的.Net Timespan的正确SQL类型是什么?
- 字符串或二进制数据将被截断