【问题标题】:How do select a string greater then 8k characters out of a SQL Server 2008 XML field如何从 SQL Server 2008 XML 字段中选择大于 8k 个字符的字符串
【发布时间】:2011-04-06 03:58:12
【问题描述】:

我正在构建一个小型 php 应用程序,它只是从数据库中提取 XML 字符串并将整个字符串显示在文本区域内的页面上。听起来很简单,对吧?当我这样做时,我达到了 8k 字符的限制并且我的 XML 被截断了。

我要做的就是从 XML 字段中获取原始文本。

SQL Server 2008 不允许转换或转换为文本。当我转换为nvarchar(max) 时,我得到的比没有转换的多一点,但它仍然被截断。使用 GUI,我可以选择该字段并打开它以显示所有文本....您如何以编程方式执行此操作?

我正在使用 ADODBPHP

$sql = "SELECT [IndicatorID]
              ,[LitpMultiYearXml]
              ,[LitpComparisonXml]
          FROM [MD_SPP_0910].[dbo].[SppResult] 
         where IndicatorID = ".$_GET['indicator_id'];

$xml = $db->GetRow($sql);
//echo $sql;
$multi_year = $xml[1];
$multi_year = htmlspecialchars(str_replace(">",">\n",$multi_year));

echo "<textarea name='xml' cols='80' rows='20'>$multi_year</textarea><input type='hidden' name='indicator_id' value='$indicator_id'/>";

【问题讨论】:

  • LitpMultiYearXml 列是否只包含您想要的值,还是其中有 XML 标记?如果是后者,你可以使用TSQL's XML.value function
  • 真的是 XML 类型的列吗?还是只是一个包含一些 XML 文本的 char 列?
  • @OMG Ponies - 我想要所有 XML 标记以及值...
  • 您可以先尝试转换为 varchar(max),然后再转换为文本。 cast(cast(XMLCol as varchar(max)) as text)

标签: sql-server xml sql-server-2005 adodb


【解决方案1】:

您可以尝试强制转换为 varchar(max) 先发短信。 cast(cast(XMLCol as varchar(max)) as 文本)——米凯尔·埃里克森

这是正确的!

我以为内部演员会限制它,但我错了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多