2017-03-01 24 views
1
select 'Test '+m.testname+' '+   
    Case 
     When m.value = 'ttttt' Then 'tt' 
     When m.styleName = 'ppppp' Then 'pp' 
     When m.styleName = 'qqqqq' Then 'qq' 
     When m.styleName = 'yyyyyy' Then 'yy'   
     Else '' 
    End  from testtable m where m.id=10' 

这是我的查询,我需要检查case statement.if长度大于35然后我想从“m.testname”字段中删除字符串形成的字符串的长度。 感谢您的帮助。如何使用case语句的结果来进行其他操作?

回答

1

您可以使用当前查询作为派生表:

select YourString, 
     LEN(YourString) [Length], 
     Case 
      When LEN(YourString) > 35 THEN REPLACE(YourString,testname,'') 
      Else YourString 
     End YourNewString 
from ( select 'Test '+m.testname+' '+   
      Case 
       When m.value = 'ttttt' Then 'tt' 
       When m.styleName = 'ppppp' Then 'pp' 
       When m.styleName = 'qqqqq' Then 'qq' 
       When m.styleName = 'yyyyyy' Then 'yy'   
       Else '' 
      End YourString, 
      m.testname 
     from testtable m 
     where m.id=10) a 
; 

或者你可以使用一个CTE:

WITH CTE AS 
(
    select 'Test '+m.testname+' '+   
     Case 
      When m.value = 'ttttt' Then 'tt' 
      When m.styleName = 'ppppp' Then 'pp' 
      When m.styleName = 'qqqqq' Then 'qq' 
      When m.styleName = 'yyyyyy' Then 'yy'   
      Else '' 
     End YourString, 
     m.testname 
    from testtable m 
    where m.id=10 
) 
select YourString, 
     LEN(YourString) [Length], 
     Case 
      When LEN(YourString) > 35 THEN REPLACE(YourString,testname,'') 
      Else YourString 
     End YourNewString 
from CTE; 
+0

thanksss其工作 – isree