【问题标题】:how to concatenate uniqueidentifier in a dynamic query如何在动态查询中连接唯一标识符
【发布时间】:2010-11-05 09:55:25
【问题描述】:

我有一个动态查询,我想在其中连接 uniqueidentifier,但 + 和 & 运算符不支持这一点,有没有办法可以将 uniqueidentifier 连接到动态字符串。在这方面的任何示例或任何帮助都将受到高度评价。

【问题讨论】:

    标签: sql-server dynamic


    【解决方案1】:

    您是否尝试过先转换或转换为字符串,然后再连接?

    CAST(NEWID() AS NVARCHAR(36))
    

    【讨论】:

    • 我试过了,它不起作用,在演员表附近给出不正确的语法,或者如果我正在转换则转换
    • @Yaser: "选择 CAST(NEWID() AS NVARCHAR(36))"。请尝试自己思考。
    • 对不起亲爱的朋友们,我的 where 条件是 WHERE (CreatedBy= CAST(@p_CreatedBy AS NVARCHAR(100)) ) 这里 @CreatedBy 是一个唯一标识符,我什至尝试转换它,但没有得到任何结果。请帮忙
    • @Yaser CAST() 的 Guid 格式可能与您的“CreatedBy”列不同。手动运行这两个版本并检查字符串是否遵循相同的格式。如果不是,则将其他“CreatedBy”转换为 Guid,然后比较 Guid。
    • 这可能是问题所在,但我该怎么做
    【解决方案2】:

    我知道这是旧的,但我遇到了这篇文章试图找出同样的事情,问题是我的唯一标识符周围没有足够的 's。我基本上有:

    'SELECT * FROM Interface WHERE ID = '' + CAST(@InterfaceID AS NVARCHAR(36)) + '' AND 1 = 1'

    我收到一条错误消息,提示 00A(GUID 的第一部分)附近的语法不正确。问题是这被解析为:

    SELECT * FROM Interface WHERE ID = 00A3F5B5-C7B3-4128-B03A-EADE79129F40 AND 1 = 1

    通过将我的查询更改为:

    'SELECT * FROM Interface WHERE ID = ''' + CAST(@InterfaceID AS NVARCHAR(36)) + ''' AND 1 = 1'

    我得到了三个撇号:

    SELECT * FROM Interface WHERE ID = '00A3F5B5-C7B3-4128-B03A-EADE79129F40' AND 1 = 1

    哪个是正确的。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-27
      • 2015-01-31
      • 1970-01-01
      • 2014-09-26
      • 2017-01-02
      • 1970-01-01
      • 2022-01-27
      • 2020-04-05
      相关资源
      最近更新 更多