T-SQL Case Statement in a JOIN ON Clause

后端 未结 6 2051
隐瞒了意图╮
隐瞒了意图╮ 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条回答
  •  滥情空心
    2021-01-12 15:33

    create a persisted computed column and add an index on it.

    ALTER TABLE YourTable ADD
        NewIntID AS (CASE ISNUMERIC(RIGHT([Statuses].[STRID], 3) + '.0e0)
                         WHEN 1 THEN CAST(RIGHT([Statuses].[STRID], 3) AS INT) 
                         ELSE 0
                     END) PERSISTED
    GO
    
    CREATE INDEX IX_YourTable_NewIntID 
    ON YourTable (NewIntID ); 
    GO
    

    you can now just join to the new NewIntID column as if it were the proper numeric ID now.

提交回复
热议问题