【问题标题】:'CRLF' not working with sql (Using sql along with lua)'CRLF' 不能与 sql 一起使用(将 sql 与 lua 一起使用)
【发布时间】:2014-03-23 18:17:45
【问题描述】:
hk=conn:query({live=true,sql ="select DISTINCT O.OrderId, (SELECT R.ReportBody + CHAR(13)+ CHAR(10) +'Modified By: ' + UM.FirstName + ' at ' + UM.LastName + ' CRLF ' +'Authored By: ' + UC.FirstName + ' at ' + UC.LastName + ' CRLF ' + 'CRLF' AS [text()] FROM dbo.OrderReports R INNER JOIN dbo.Users UM ON R.ModifiedById = UM.UserId INNER JOIN dbo.Users UC ON R.CreatedById = UC.UserId WHERE R.OrderId = O.OrderId ORDER BY R.CreateDate FOR XML PATH('')) 'OrderReport'FROM dbo.Orders O "})

现在,它打印 CRLF 而不是给 A LINE BREAK,我也不能使用 char(13),不工作。我怎样才能解决这个问题?

【问题讨论】:

  • AFAIK 正确的 SQL 语法如下:SELECT R.ReportBody||CHR(13)||CHR(10)||'Modified By: '||...
  • 不,这也不起作用,语法不正确

标签: sql lua newline line-breaks


【解决方案1】:

只需将+'CRLF' 替换为+CHAR(13)+CHAR(10) 即可(有一些+' CRLF ' 我认为应该像+'CRLF' 一样对待)

无论如何,CR LF(回车后跟换行符,char(13)+char(10))是类似 DOS 的行终止符,类似 Unix 的是 LF(char(10)

您的查询输出是否应该与 JSON 兼容?在这种情况下,您应该将+'CRLF'(和+' CRLF ') 替换为+'\n' 或+'\\n'(甚至+'\\\\n',取决于使用\ 作为转义字符的级别数)。

相反,如果从您的 cmets 看来,您处于从 SQL 中转义控制字符的 Unixish 环境(Iguana 中的 lua)中,您将不得不忍受这种情况,将 +'CRLF' 替换为 +CHAR(10)并让结果\ns 的解释发生在稍后阶段。

【讨论】:

  • @Simrankaur:您的意思是在查询输出中Modified By 之前没有换行符?你在R.ReportBodyModified By 之间看到了什么?
  • OD;\n ,这就是我看到的 char(13)+char(10)
  • @Simrankaur:嗯,这意味着char(13) 被认为是“奇怪的”(否则它会被呈现为\r),并且您应该在字符串中使用输出其中\n 等控制字符被解释。您将永远不会在该输出中看到换行符,您将始终看到 \n(来自 char(10))。您必须告诉我们有关查询环境的一些信息,因为查询本身,一旦您将 'CRLF' 转换为 char(10),就可以了。
  • 好的,所以我正在研究 Iguana,它有一个集成的 lua 语言实时翻译器。在我的查询中,我从一个名为 Reportbody 的字段中获取数据,该字段来自所有具有相同 orderId 和需要在换行后将其与修改者和作者连接起来
  • 如果我的最后一段还不够(我无法提供更多帮助),我的建议是编辑问题,将 Iguana 添加到标签中,如果很重要,请奖励一个有用的答案。不过,请确保在您的问题中添加尽可能多(且合理)的信息!
猜你喜欢
  • 2011-02-20
  • 2019-11-15
  • 1970-01-01
  • 2011-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多