CASE,LIKE在动态SQL中的EXEC中

时间:2017-08-21 19:55:42

标签: sql sql-server

我需要创建一个存储过程,它将调用exec语句从表中选择一个列。我需要在其中包含一个case和like语句。我无法获得正确的语法。我得到了错误" 123"附近的语法不正确。

declare @sql varchar(1000)=''
set @sql='exec(''
select 
 case 
    when col like ''123%'' then ''123''
    when col=''234'' then ''234''
    else 'Other' 
 end as col from table'')' 

2 个答案:

答案 0 :(得分:1)

我希望语法是这样的:

declare @sql varchar(1000) = '';
set @sql = ;
select (case when col like ''123%'' then ''123''
             when col  =''234'' then ''234''
             else 'Other' 
        end) as col
from . . .
';

exec sp_executesql @sql;

您的代码引用了col,它需要来自某个地方。因此,from条款。

答案 1 :(得分:0)

您是否尝试这样做:

declare @sql varchar(1000)=''
set @sql= 'select case 
     when col like ''123%'' then ''123''
     when col=''234'' then ''234''
     else ''Other'' 
    end as col
from table'
EXEC (@sql)