【问题标题】:MS Access - Joining GUID and String columnsMS Access - 加入 GUID 和字符串列
【发布时间】:2012-07-01 00:06:14
【问题描述】:

我在连接两个表时遇到问题,其中一个连接列是 varchar,另一个是 guid 类型。

生成的SQL语句如下:

INSERT INTO adnVFD
SELECT dbo_adnVFD.*
FROM PRC INNER JOIN dbo_adnVFD ON PRC.PrcId = dbo_adnVFD.VarType;

我尝试使用StringFromGUID 函数转换PRC.PrcId 列,以便两列应该属于同一类型。但没有成功。

关于如何解决这个问题的任何想法?

【问题讨论】:

    标签: ms-access guid inner-join


    【解决方案1】:

    如何使用派生表,例如:

    SELECT  b.* 
    FROM Table2 b
    INNER JOIN (SELECT StringFromGUID([ID]) As Expr1 FROM Table1) a
    ON b.Expr1=a.Expr1
    

    【讨论】:

    • 我在发布之前进行了测试。你的表都是 MS Access 吗?
    • 不,实际上我是在链接表的帮助下从 SQL Server 导入行。我从 SQL Server 链接了几个表。在第一个查询中,我添加了 where 子句,而对于后续查询,我只需加入(未链接的)表,以便仅选择相关数据。
    • 你能使用直通查询,比如stackoverflow.com/questions/6299918/…吗?我认为您不会让它与 MS Access 功能一起使用。
    【解决方案2】:

    如果我

    (1) 创建一个包含两个字段的新表 - (a) ID, set as an autonumber, field size replication ID(又名 Guid)和 (b) ID2, text(255)

    (2) 添加一行,让它创建自动编号,并将其从 ID 复制并粘贴到 ID2 中

    (3)SELECT Table1.ID, Table1.ID2 FROM Table1 where ID = ID2

    我回到我的行列。请注意,粘贴的字符串确实包含大括号。您可能希望确保比较不会以某种方式丢弃它们。

    然后我创建了第二个表,其中包含两个文本字段,均为 text(255),并加入:

    SELECT Table1.ID, Table1.ID2, Table2.Field1
    FROM Table1 INNER JOIN Table2 ON Table1.ID = Table2.ID;
    

    这很好,让我回到了我的行列。我的钱是在你的情况下丢失的牙套上。 我根本不需要使用StringFromGUID()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-04
      • 2016-12-18
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      相关资源
      最近更新 更多