我正在研究一些将数据转储到表中的代码。
部分数据包括回车。
最终,数据将导出为HTML格式的电子邮件或文本文件(CSV),或两者。我事先不知道将对此数据使用哪种导出方法。
如果我写回车,请按以下方式返回数据库:
UPDATE SOME_TABLE
SET TEXT_VALUE = @LineOne + CHAR(13) + CHAR(10) + @LineTwo
WHERE ID = @IDValue
然后它在CSV文件中运行得很好,但HTML电子邮件完全搞砸了 - 它会混淆编码并显示带有标题和mime信息的电子邮件,除了调试之外完全没用。
另一方面,如果我把我的回车写回数据库,就像这样:
UPDATE SOME_TABLE
SET TEXT_VALUE = @LineOne + '<br>' + @LineTwo
WHERE ID = @IDValue
然后是另一种方式 - 它适用于电子邮件,但文本文件输出时文本中嵌入了实际的“br”,如“LineOne&lt; br&gt; LineTwo”。
有没有办法以某种方式表示回车,这种方式会在HTML中两个纯文本和中产生相同的结果?
所有这些都是在T-SQL存储过程内部在SQL Server 2008上运行的。
答案 0 :(得分:4)
我认为最合适的方法是存储所有文字&#34; as-is&#34;使用CR LF,然后在从表中获取数据时进行适当的操作,即。如果要渲染html等,则将换行符转换为
答案 1 :(得分:3)
这是其中一个没有简单回答的时间。正如您在此处所看到的,HTML和纯文本的解释方式截然不同。换行符在两者中都是不同的,而在另一行中则不相容。
您需要做的是将逻辑分成不同的存储过程:一个用于HTML /电子邮件格式化,一个用于纯文本/ csv格式化。
答案 2 :(得分:0)
我不确定您使用哪种语言发送电子邮件。如果它是PHP,您可以使用普通文本和回车符,并使用以下命令将它们转换为html-linebreaks:
nl2br($text);