Sql server 2008 如何将case语句的结果用于其他操作?
这是我的查询,我需要检查case语句后形成的字符串的长度。如果长度大于35,那么我想从“m.testname”字段中删除字符。Sql server 2008 如何将case语句的结果用于其他操作?,sql-server-2008,Sql Server 2008,这是我的查询,我需要检查case语句后形成的字符串的长度。如果长度大于35,那么我想从“m.testname”字段中删除字符。 感谢您的帮助。您可以将当前查询用作派生表: select 'Test '+m.testname+' '+ Case When m.value = 'ttttt' Then 'tt' When m.styleName = 'ppppp' Then 'pp' When m.styleName = 'q
感谢您的帮助。您可以将当前查询用作派生表:
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'
或者您可以使用CTE:
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
;
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;