2017-08-21 8 views
0

テーブルから列を選択するためにexec文を呼び出すストアドプロシージャを作成する必要があります。その中にcaseとlikeステートメントが必要です。正しい構文を取得できません。「123近くの構文が正しくありません」というエラーが表示されます。ケース、動的SQLのEXECでLIKE

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'')' 
+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節。

+0

感謝しました。何とか私はSQL文の中にexecがあることを見逃しました –

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)