2017-03-01 11 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文の後に形成される文字列の長さを調べる必要があります。長さが35より大きい場合、 "m.testname"フィールドから文字列を削除します。 ご協力いただきありがとうございます。case文の結果を別の操作にどのように使用できますか?

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使用することができます:

答えて

1

あなたは派生テーブルとしてあなたの現在のクエリを使用することができ、その加工さthanksss

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

を – isree

関連する問題