日期:2014-05-18  浏览次数:20397 次

简化SQL语句
SQL code
   A.FinanceSubjectID LIKE '%,' + CAST(T.FinanceSubjectID AS VARCHAR(50))+ ',%' 
OR A.FinanceSubjectID LIKE '%,' + CAST(T.FinanceSubjectID AS VARCHAR(50)) 
OR A.FinanceSubjectID LIKE CAST(T.FinanceSubjectID AS VARCHAR(50))+ ',%' 
OR A.FinanceSubjectID = CAST(T.FinanceSubjectID AS VARCHAR(50))
OR A.FinanceSubjectID IS NULL


这段SQL是一个WHERE条件,如何简化?

------解决方案--------------------
SQL code

where A.FinanceSubjectID IS NULL
  or ','+A.FinanceSubjectID+',' like '%,' + CAST(T.FinanceSubjectID AS VARCHAR(50))+ ',%'

------解决方案--------------------

++
探讨

SQL code

where A.FinanceSubjectID IS NULL
or ','+A.FinanceSubjectID+',' like '%,' + CAST(T.FinanceSubjectID AS VARCHAR(50))+ ',%'

------解决方案--------------------
两个表里面的FinanceSubjectID 分别是值?
------解决方案--------------------
SQL code
where
 ','+isnull(A.FinanceSubjectID,T.FinanceSubjectID)+',' LIKE '%,' + CAST(T.FinanceSubjectID AS VARCHAR(50))+ ',%'

------解决方案--------------------
where
CHARINDEX(A.FinanceSubjectID,CAST(T.FinanceSubjectID AS VARCHAR(50)))>0 or OR A.FinanceSubjectID IS NULL