2013-10-11 44 views
0

我发送字符串,我在fom c#中,我发送它到一个程序在那里我用它作为nvarchar(1000),然后在SQL IN运算符中使用它,但我收到错误“转换失败时转换一个字符串uniqueidentifier。“我收到错误“从字符串转换为uniqueidentifier时转换失败。”

我送这个

SET @a='E1554084-7B8F-4F04-B6B3-4892E4C5687F','4B555046-152B-411D-A611-D9D507906259' 
在字符串生成器

,我想使用逗号作为经营者未在SQLSERVER字符串

SELECT * FROM MemberJobDetails WHERE GradeID IN (@a) 

这里GradeID是唯一标识符

+0

投你的字符串作为你的SQL语句中的唯一标识符或试图简单地把周围的GUID字符串{...} – jazzytomato

+0

你的参数'@a支架'是一个**单个字符串**,而'IN'运算符期望一个**列表项**作为其参数.... –

+1

发生在*包含*逗号的单个字符串在逻辑上是不同的东西来自多个字符串*用逗号分隔*。你有什么是前者。在这里搜索参数化“IN”,你会发现许多不同的(更好或更差)解决方案。 –

回答

0
Following query may help you 

DECLARE @UID NVARCHAR(2000) 
SET @UID='2A66057D-F4E5-4E2B-B2F1-38C51A96D385' 
DECLARE @nUID AS UNIQUEIDENTIFIER 
SET @nUID = CAST(@UID AS UNIQUEIDENTIFIER) 
PRINT @nUID 
0

两种方法

1动态SQL

declare @a varchar(1000) 
SET @a='E1554084-7B8F-4F04-B6B3-4892E4C5687F,4B555046-152B-411D-A611-D9D507906259' 

set @a=''''+replace(@a,',',''',''')+'''' 

declare @sql varchar(8000) 
set @sql='SELECT * FROM MemberJobDetails WHERE GradeID IN ('[email protected]+')' 
exec(@sql) 

2静态SQL

SELECT * FROM MemberJobDetails WHERE ','[email protected]+',' like '%,'+GradeID+',%' 
相关问题