在sql中连接两列并对结果应用like操作

在sql中连接两列并对结果应用like操作,sql,sql-server,Sql,Sql Server,在上面的查询中,我想用空格表示名字和姓氏,并根据存储过程@subcontractorname的输入进行查询 当subcontractorname为null时,这很好,但当它跳转到Or子句时,我无法获得结果 已尝试使用SQL Server探查器,但未显示查询的形成方式 我试图通过将整个SQL放在一个var中来执行SQL,但我遇到了varcharmax的问题 请告知当您仅从EC中选择条件本身时,它是否起作用?你的意思是“%+@subContractor+%”吗?我觉得这种名称匹配不对。concata

在上面的查询中,我想用空格表示名字和姓氏,并根据存储过程@subcontractorname的输入进行查询

当subcontractorname为null时,这很好,但当它跳转到Or子句时,我无法获得结果

已尝试使用SQL Server探查器,但未显示查询的形成方式

我试图通过将整个SQL放在一个var中来执行SQL,但我遇到了varcharmax的问题


请告知

当您仅从EC中选择条件本身时,它是否起作用?你的意思是“%+@subContractor+%”吗?我觉得这种名称匹配不对。concatation在选择CONCATSG.firstname+'',SG.lastName作为'name'行中起作用。但是,当试图对其进行查询时,它不起作用。。。。。在执行存储的prod-shawnt00时,是否有一种方法可以查看此查询是如何形成的?我不是在质疑上下文。在我看来,这可能是错误的。您说过您尝试了探查器,是的,它会让您看到查询通过。但它不允许您看到在单个数据行级别发生的任何事情。最简单的方法是在一个表上用一个有问题的条件隔离一个简单的SELECT。SELECT*来自EntityContacts EC,其中EC.firstName+''+EC.lastName,如@subContractorName+'%'-这是否返回您期望的结果?是的,SELECT返回我期望的结果,这是我在编写选择
SELECT 
    CONCAT(SG.firstname +' ', SG.lastName) AS  'Name', 
    SG.entityId 'ID',
    dbo.GetTitleDescriptionByEntityID(SG.entityId) 'Title',
    CASE ISNULL(EC.address2, '') 
      WHEN '' THEN EC.address1 
      ELSE EC.address1 +', ' + EC.address2
    END +', ' + EC.city + ', ' + LDState.ItemName + ', ' + EC.zip 'Address',
    CR.clinicalRate
FROM 
    StaffGeneral SG WITH (NOLOCK) 
JOIN 
    LookupDetails LD WITH (NOLOCK) ON SG.employeeStatus = LD.lookupDetailsId AND LD.ItemAbbreviation = 'SCSSC'
JOIN
    othersRating or1 WITH (nolock) ON SG.entityId = or1.entityId AND dateRated = (SELECT TOP 1 MAX(dateRated) FROM OthersRating r1 WITH (nolock) WHERE r1.entityid = SG.entityId)       
JOIN 
    LookupDetails LDRating with (nolock) ON or1.rating = LDRating.lookupDetailsId AND LDRating.ItemAbbreviation NOT IN ('RTNP', 'RTDNU', 'RTPENDING', 'RTDELETE', 'RTTERMI')    
JOIN 
    EntityContacts EC with (nolock) ON SG.entityId = EC.entityId AND (eC.contactId = 'General' or EC.contactId = 'General1') AND EC.deleted = 0
JOIN 
    LookupDetails LDState WITH (NOLOCK) ON EC.state = LDState.lookupDetailsId
JOIN 
    ContractorRate CR ON SG.entityId = CR.entityId AND CR.deleted = 0
WHERE 
    SG.isActive = 0 AND SG.deleted = 0
    AND ((SG.entityId = @subContractorID) OR (@subContractorID IS null))
    AND ((@subContractorName IS NULL) OR ((EC.firstName + ' ' + EC.lastName) LIKE @subContractorName + '%'))