【问题标题】:sqltextinfo gets truncated while copying to excelsqltextinfo 在复制到 excel 时被截断
【发布时间】:2022-02-23 23:10:30
【问题描述】:

我需要从日志表中获取“sqltextinfo”列,但当我将其复制到 excel 时,文本未正确放置在单元格中。

我尝试了以下查询来获取它。但它抛出错误 -9134 结果超出最大长度

oreplace(替换(翻译(sql textinfo),',',''),chr(10),chr(13),'')sql textinfo

有没有办法在不使用 substr 的情况下使用上述查询

请帮忙

【问题讨论】:

  • 我认为你的括号放错了地方,但这可能只是一个错字。此外,您似乎已经切换了 OREPLACE(字符串)和 OTRANSLATE(单个字符)的用法。但这些都与 OREPLACE 的 9134 错误没有具体关系:当 OREPLACE 的输入为 VARCHAR 时,结果限制为 16000 字节。您可以将参数 CAST 为 CLOB 并将结果 CAST 回 VARCHAR 作为解决方法。 (我不认为 OTRANSLATE 接受/返回 CLOB。)
  • 请提供足够的代码,以便其他人可以更好地理解或重现问题。

标签: teradata teradatasql


【解决方案1】:

我用它来用单个 ' ' 替换任何空格:

Cast( RegExp_Replace(Cast(SqlTextInfo AS CLOB(31000)), 's+', ' ',1,0,'c') AS VARCHAR(31000))

【讨论】:

  • 谢谢@dnoeth。查询按预期工作。但文本仍然很长,因此被截断为几行。我能做些什么来获得全文吗?
  • 对于大型查询,您将在 31k junks 中获得 QryLogSQLV 中的多行,这些行必须按 SqlRowNo 排序。有多种方法可以将它们组合成一个 CLOB,但是您将在单个单元格中达到 Excel 的 32767 个字符的限制:-)
  • 知道了 :-) 感谢您的快速回复。您能否解释一下上述查询中给出的参数?
  • 事实上,您不需要参数,它们是剪切和粘贴的剩余部分。 s 表示空格(CR、LF、Tab 等)。 1是位置搜索开始的地方,0发生要替换的模式(0 表示全部无论如何都是默认设置)和匹配参数c 表示区分大小写,这显然对空白无关紧要
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-19
  • 2015-07-31
  • 2019-06-24
  • 2014-03-25
  • 2016-04-22
  • 2010-10-28
相关资源
最近更新 更多