数据表更新后,换行符在 SQL 中被剥离
本文关键字:SQL 剥离 换行符 更新 数据表 | 更新日期: 2023-09-27 18:35:25
我有一个数据表,通过删除html来修改。在 html 条带期间,如果遇到<br>
、<p>
或<li>
,它们将被替换为 System.Environment.NewLine
。我正在将 html 条带进程的任何实例记录到文本文件中,并且格式在日志中看起来很好(保留所有 CRLF)。但是,当在数据表上调用更新方法并将数据发送到数据库时,CRLF 字符将全部消失。
代码片段:
public static class HtmlStripper
{
static Regex _htmlRegex = new Regex("<.*?>", RegexOptions.Compiled);
static Regex _liRegex = new Regex("<li>", RegexOptions.Compiled);
static Regex _brRegex = new Regex("<(br)?(BR)?''s?/?>''s*", RegexOptions.Compiled);
static Regex _pRegex = new Regex("</?[phPH].*?>''s*", RegexOptions.Compiled);
public static string StripTagsRegexCompiled(string source)
{
string noPorH = _pRegex.Replace(source, System.Environment.NewLine);
string noBr = _brRegex.Replace(noPorH, System.Environment.NewLine);
string noLi = _liRegex.Replace(noBr, System.Environment.NewLine + "t- ");
return _htmlRegex.Replace(noLi, string.Empty);
}
}
SSMS 会删除数据网格中的 CRLF - 但它们仍存在于数据库中。 您可以通过按 CTRL-T
将结果转换为 TEXT 而不是在网格中来证明这一点。 然后,您可以按CTRL-D
返回到将结果显示在网格中。
您可以使用以下内容进行测试:
SELECT 'Not' + CHAR(10) + CHAR(13) + 'Together'
首先在网格中显示结果:
(No Column name)
Not Together
然后在文本结果中:
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 0 ms.
-------------
Not
Together
(1 row(s) affected)
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 0 ms.
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.