は、私は、このような何かを適切な型にnvarchar型の値を変換するCASE
を使用していますSELECT
をやって評価しましたではなく、と同等です。実行可能な例:CASEはTHEN句は常に
declare @proptype nvarchar(50)= 'nvarchar'
declare @val nvarchar(10) = 'test'
select
case @proptype
when 'money' then convert(money, @val)
else @val
end
どうしてこれを回避できますか?
CASE文は条件を順に評価し、条件が満たされる最初の条件で を停止します。一部の 状況では、CASEステートメント がその入力として式の結果を受け取る前に式が評価されます。これらの式を評価するエラーは である可能性があります。 がWHENのCASE文の引数に最初に評価され、次に がCASE文に提供されるという集計式が評価されます。たとえば、次のクエリ は、MAX アグリゲートの値を生成するときにゼロ除算エラーを生成します。これは、CASE式を評価する前に発生します。
これは関連性はありませんが、言語は非ネイティブのため多少重いので多分そうですか?
唯一の目的は、そう私の知る限り、フォーマットの目的のために、ありますクライアントがフォーマットを処理するかどうか? –
ソースデータは私のコントロール下にありません。実際のケースでは、データをそのような形式にするためにかなりのフープを飛ばしなければなりません。適切な型付けされたレポートテーブルに挿入することができます – carlpett