【问题标题】:For XML length limitation对于 XML 长度限制
【发布时间】:2013-09-18 00:42:06
【问题描述】:

我正在尝试使用 XML PATH 在查询中连接一些字符串数据的结果

请参阅下面的查询。发生的情况是 XML 连接列语句被截断。似乎最大长度有限制。我该如何克服这个问题。

select SUBSTRING(statement,1,len(statement)-2)+';'
from(
select 
'update '+tab.table_name +' set ' +
(
select 
col.COLUMN_NAME +'=replace('+col.column_name+',''@xx'',''yy'') ,'+CHAR(10) 
from INFORMATION_SCHEMA.COLUMNS as col
where  tab.TABLE_CATALOG=col.TABLE_CATALOG
and tab.TABLE_SCHEMA=col.TABLE_SCHEMA
and tab.TABLE_NAME=col.TABLE_NAME
and col.DATA_TYPE in('VARCHAR','NVARCHAR')
for xml path('') )  as statement
from information_schema.TABLES as tab
) as x
where statement is not null

【问题讨论】:

  • 当您从应用程序或 SSMS 中拉回数据时,它是连接的吗?
  • 你是如何执行上述操作的?如果它在 SSMS 中,那么它将显示的字符数有限制。这可以通过一个选项进行更改。
  • 我显然不能在这里编辑我的 cmets;我的意思是说截断,而不是串联。
  • 它在 SSMS 中-按照 cory 的建议,我更改了 SSMS 中的限制,它工作正常。谢谢大家。

标签: sql sql-server


【解决方案1】:

假设您在 SSMS 中看到截断,请更改 SSMS 选项中的最大字符设置:

  • 工具 > 选项 > 查询结果 > SQL Server > 结果到文本 > 每列中显示的最大字符数

    (limit is 8192 characters)
    
  • 工具 > 选项 > 查询结果 > SQL Server > 网格结果 > 检索到的最大字符数

    Non XML data limit is 65535 characters
    XML data limit is Unlimited
    

【讨论】:

  • 使用 Sql Server 2012 Managment studio 我必须重启 SSMS 才能使新的 XML 设置生效。
  • 如果通过 DB Mail 发送的电子邮件中的结果被截断怎么办?
猜你喜欢
  • 1970-01-01
  • 2013-10-25
  • 2010-12-06
  • 1970-01-01
  • 2010-11-05
  • 2013-09-03
  • 2016-08-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多