Sql server 如何在动态查询中连接uniqueidentifier

Sql server 如何在动态查询中连接uniqueidentifier,sql-server,dynamic,Sql Server,Dynamic,我有一个动态查询,其中我想连接uniqueidentifier,但+和&运算符不支持,有没有一种方法可以将uniqueidentifier连接到动态字符串。我们将非常感谢您在这方面提供的任何样品或帮助。您是否尝试过先铸造或转换为字符串,然后再铸造 CAST(NEWID() AS NVARCHAR(36)) 我知道这很老了,但我在这篇文章中遇到了同样的问题,问题是我的唯一标识符周围没有足够的。我基本上有: “从接口中选择*,其中ID=''+CAST(@InterfaceID作为NVARCHAR(

我有一个动态查询,其中我想连接uniqueidentifier,但+和&运算符不支持,有没有一种方法可以将uniqueidentifier连接到动态字符串。我们将非常感谢您在这方面提供的任何样品或帮助。

您是否尝试过先铸造或转换为字符串,然后再铸造

CAST(NEWID() AS NVARCHAR(36))

我知道这很老了,但我在这篇文章中遇到了同样的问题,问题是我的唯一标识符周围没有足够的。我基本上有:

“从接口中选择*,其中ID=''+CAST(@InterfaceID作为NVARCHAR(36))+''和1=1'

我在00A(GUID的第一部分)附近遇到一个错误,说语法不正确。问题在于,这是解析到:

从ID=00A3F5B5-C7B3-4128-B03A-EADE79129F40和1=1的界面中选择*

通过将我的查询更改为:

“从接口中选择*,其中ID='''+CAST(@InterfaceID作为NVARCHAR(36))+''和1=1'

我得到了三个撇号:

从接口中选择*,其中ID='00A3F5B5-C7B3-4128-B03A-EADE79129F40'和1=1

这是正确的


希望对您有所帮助。

我试过了,但它不起作用,在cast附近给出了错误的语法,或者在im中转换converting@Yaser:“选择CAST(NEWID()作为NVARCHAR(36))”。请试着自己想想。对不起,亲爱的朋友,我的where条件是where(CreatedBy=CAST(@p_CreatedBy AS NVARCHAR(100)),这里@CreatedBy是一个唯一的标识符,我甚至尝试过转换它,没有得到任何结果。请help@YaserCAST()的Guid格式可能与“CreatedBy”列的格式不同。手动运行两个版本,并检查字符串是否遵循相同的格式。如果不是,则将另一个“CreatedBy”转换为Guid,并比较Guid。这可能是问题所在,但我如何做到这一点