【发布时间】:2013-06-16 14:18:53
【问题描述】:
我正在构建一个应用程序,通过 ftp 和 XML 文件将数据从 SQL 服务器传输到异地位置。
我正在通过FOR XML PATH('path'), TYPE 的查询为每个文件构建 XML 数据。
我将使用GUID 来生成文件名以及用作文件中的标识符,目前我获取表的 SQL 如下(简化):
SELECT LVL1.inv_account_no
, LVL1.cus_postcode
, CONVERT(varchar(255),NEWID()) + '.xml' as FileName
, (SELECT (SELECT CONVERT(varchar(255),NEWID()) FOR XML PATH('ident'), TYPE), (
SELECT.... [rest of very long nested select code for generating XML]
SQL Fiddle Example
这是给我的:
Account Postcode FileName xCol
AD0001 B30 3HX 2DF21466-2DA3-4D62-8B9B-FC3DF7BD1A00 <ident>656700EA-8FD5-4936-8172-0135DC49D200</ident>
AS0010 NN12 8TN 58339997-8271-4D8C-9C55-403DE98F06BE <ident>78F8078B-629E-4906-9C6B-2AE21782DC1D</ident>
NEWID() 的每一行/使用的 GUID 基本不同。
有没有一种方法可以在不增加光标或进行两次更新的情况下将相同的 GUID 插入两列?
【问题讨论】:
-
您是否考虑将值作为字段添加到表中?
-
没有保证的方法。即使对于
SELECT N AS N1, N AS N2 FROM (SELECT NEWID())T(N),它会被评估多少次也是不确定的 -
@BabakNaffas,我确实考虑过将 GUID 添加到表中,唯一的问题是它是多个连接的产物,这意味着标题中的单个 GUID 可以引用 1 到 n 行,我可以只知道如何为每一行添加一个 GUID,然后我必须找到一种方法来可靠地聚合它。
标签: sql-server xml sql-server-2008 guid