【问题标题】:ms sql xml data type convert to textms sql xml 数据类型转换为文本
【发布时间】:2011-01-05 15:32:30
【问题描述】:

在 MS Sql 中,delphi 7 不支持某些数据类型,xml 数据类型就是一个例子。

我希望将 XML 数据类型转换为 Text 数据类型,以便我可以在 delphi 中处理它。

有没有办法从xml转换成文本?

【问题讨论】:

    标签: sql-server xml delphi text delphi-7


    【解决方案1】:

    一个简单的演员就足够了:

    select cast(XMLCol as nvarchar(max)) as XMLCol 
    

    或者对于非 unicode:

    select cast(XMLCol as varchar(max)) as XMLCol 
    

    您不能显式转换为“文本”数据类型。

    我添加了as XMLCol 以确保转换后的数据与列同名。当然,你不需要这个。

    编辑:

    几个链接。无论如何,我们鼓励您使用 nvarchar(max) 而不是 text。微软已经表示他们将在未来的版本中弃用这些类型。 nvarchar(max) 应该为您提供 2GB:

    http://www.petefreitag.com/item/734.cfm

    http://www.teratrax.com/articles/varchar_max.html

    http://msdn.microsoft.com/en-us/library/ms187752(v=SQL.90).aspx

    【讨论】:

    • varchar的问题是x字节的限制,xml不是这样的。
    • 您使用的是哪个版本的 SQL。 nvarchar(max) 最多可以为您提供 2GB。
    • 快速搜索后,指定varchar(5000)和varchar(max)是有区别的
    • CAST() 或 CONVERT() 都不会正确地对 xml 进行转义。当节点集查询函数上没有匹配的标记时,转换为 NULL 的处理也会失败。
    【解决方案2】:
    SELECT CAST(YourXMLColumn as nvarchar(max))
        FROM YourTable
    

    【讨论】:

    • 这是我通常做的,它很干净,容易记住,很难搞砸:)
    【解决方案3】:

    我刚刚尝试了以下解决方案,是的,您确实需要 as XMLCol

    select cast(XMLCol as nvarchar(max)) as XMLCol 
    

    【讨论】:

      猜你喜欢
      • 2016-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-04
      • 1970-01-01
      • 2013-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多