首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL查询时出现“将字符串转换为 uniqueidentifier 时失败”。该如何处理

2013-10-21 
SQL查询时出现“将字符串转换为 uniqueidentifier 时失败”。select a.CustomerName,a.boy,b.girl from(selec

SQL查询时出现“将字符串转换为 uniqueidentifier 时失败”。
select a.CustomerName,a.boy,b.girl from 
                            (select c.CustomerName,count(*) as boy from tb_masEmPersonalInfo a 
                            left join tb_masEmployeeEmployer b on a.EmPersonalInfoID=b.EmPersonalInfoID
                            left join tb_masCustomer c on b.CustomerID=c.CustomerID
                            where a.Disabled=0
                            and b.EwStatus in ('A','N') 
                            and a.GenderID=1
                            and c.CustomerID='@c.CustomerID'
                            group by c.CustomerName) a 
                            left join
                            (select c.CustomerName,count(*) as girl from tb_masEmPersonalInfo a 
                            left join tb_masEmployeeEmployer b on a.EmPersonalInfoID=b.EmPersonalInfoID
                            left join tb_masCustomer c on b.CustomerID=c.CustomerID
                            where a.Disabled=0


                            and b.EwStatus in ('A','N') 
                            and a.GenderID=2
                            and c.CustomerID='@c.CustomerID'
                            group by c.CustomerName) b on a.CustomerName=b.CustomerName
                            
                            union

                            select '总计' as CustomerName,a.boy as 男,b.girl as 女 from 
                            (select count(*) as boy from tb_masEmPersonalInfo a 
                            left join tb_masEmployeeEmployer b on a.EmPersonalInfoID=b.EmPersonalInfoID
                            left join tb_masCustomer c on b.CustomerID=c.CustomerID
                            where a.Disabled=0
                            and b.EwStatus in ('A','N') 
                            and a.GenderID=1
                            and c.CustomerID='@c.CustomerID') a 


                            left join
                            (select count(*) as girl from tb_masEmPersonalInfo a 
                            left join tb_masEmployeeEmployer b on a.EmPersonalInfoID=b.EmPersonalInfoID
                            left join tb_masCustomer c on b.CustomerID=c.CustomerID
                            where a.Disabled=0
                            and b.EwStatus in ('A','N') 
                            and a.GenderID=2
                            and c.CustomerID='@c.CustomerID') b on 1=1


将字符串转换为 uniqueidentifier 时失败。

[解决办法]


--你的参数现在是这个样子的
declare @p varchar(30)
set @p='@c.CustomerID'
select @p
/*
@c.CustomerID
*/

--应该是这个样子的
declare @p1 varchar(36)
set @p1=newid()
select @p1
/*
AE9508EE-24D1-4AF2-9285-18373B
*/

[解决办法]
引用:
c.CustomerID是uniqueidentifier类型的...

既然这样,为什么在and c.CustomerID='@c.CustomerID'这里用'@c.CustomerID'呢?


如果是变量的话,不能加单引号吧。
而且@c.CustomerID这种变量名也是不合法的,不能有.

热点排行