1

看来SQL Server CE 不喜欢COALESCE我的专栏。

如果我的查询有COALESCE(ep.value, '') as id,查询失败

参数无效

我试过使用 ( case ep.value when null then '' else ep.value end) 但后来我得到了其他关于NTEXT等的错误。

有谁知道将空值转换为非空值的另一种方法?

更新:

完整的查询相当复杂,需要很长时间才能解释,但这里是为了好奇。

    SELECT COALESCE(ep.value, '') as domainId , [p].[id], [p].[firstName], [p].[middleName], [p].[lastName], [p].[isDeleted], ...    
FROM Patient p 

INNER JOIN PatientOrganisation po on p.id = po.patientFk  

left join extendedproperty ep on ep.entityId = p.id 

left join (select sgu.id, sgu.unitFk 
           from StaffGroupUnit sgu 
           where sgu.staffGroupFk = '3d364f5b-b5ff-456a-bf33-d8b48bf195b2' and sgu.isDeleted = 0) as bat on bat.unitFk = po.unitFk 

where p.isDeleted = 0 and po.isDeleted = 0  AND 
      COALESCE(ep.metadatafk,'55b009d5-cead-4b62-ad04-526b57a02ed2')='55b009d5-cead-4b62-ad04-526b57a02ed2' and 
      COALESCE(ep.isdeleted,0)=0  AND 
      (not exists(select 1 from staffgroupunit sgu where sgu.staffGroupFk = '3d364f5b-b5ff-456a-bf33-d8b48bf195b2' and sgu.isDeleted=0) OR bat.id IS NOT NULL)  
order by p.lastName, p.firstName 

现在是的,我知道这个查询是可怕的,我实际上已经通过删除它的某些部分来解决这个问题。真正有趣的是,这个查询大部分都可以工作。当它因“参数无效”而失败时,我可以使用 Visual Studio 或 Management Studio 运行完全相同的查询,它会正常工作。

我们正在使用 CE 3.5,因为我们的产品之一是 Windows Mobile。我怀疑这只是 CE 中的一个错误,升级将修复。

干杯

4

1 回答 1

1
于 2012-07-24T03:37:37.257 回答