T-SQL Case Statement in a JOIN ON Clause

后端 未结 6 2031
隐瞒了意图╮
隐瞒了意图╮ 2021-01-12 15:09

I am trying to build a case/if statement in a JOIN ON clause.

LEFT JOIN [CTSTRC] [Statuses] ON RIGHT([Statuses].[STRID], 3) = [CTE].[F61]
         


        
6条回答
  •  萌比男神i
    2021-01-12 15:38

    You're looking for IsNumeric but it doesn't always work (+,- and . are numeric) so you need to use the solution described by GBN which is to add .0e0 to your varchar

    LEFT JOIN [CTSTRC] [Statuses] ON 
        (CASE WHEN ISNUMERIC(RIGHT([Statuses].[STRID], 3) + '.0e0) = 1 
              THEN  CAST(RIGHT([Statuses].[STRID], 3) AS INT) 
              ELSE 0  END) = [CTE].[F61] 
    

提交回复
热议问题