まず、さまざまな同様の投稿を読みましたが、他の投稿者がこのエラー メッセージで抱えていた問題と私が遭遇した状況との類似点を特定できませんでした。おそらく私は正しく検索していませんが、シナリオは次のとおりです。数値に変換すると 70 未満のテーブル内の値を検索しようとしています。コンマを使用して値を格納できる場合があるため (3,080 など)、コンマを削除する replace ステートメントがあります。obsValue
以下のクエリの列はvarchar(2000)
、それと関係があるかもしれないと推測しています。私の最初のクエリは機能しました:
Select name, obsValue
From database.dbo.table
Where name in ('LDL')
and isnumeric(obsvalue) = 1
and cast(replace(obsvalue,',','') as decimal(18)) < 70
name
これにより期待値が返されますが、検索しようとしているのはそれだけではありません。その他の例としては、 があります('LDL(CALC)')
。ステートメントを使用するUNION
と、クエリを結合できますが、残念ながら、アプリケーション コードを制御できないため、これはオプションではありません。私が利用できる唯一のオプションは句を使用することです。そのため、さまざまな値IN
を検索すると、最終的にクエリは次のようになります。name
Select name, obsValue
From database.dbo.table
Where name in ('LDL', 'LDL(CALC)')
and isnumeric(obsvalue) = 1
and cast(replace(obsvalue,',','') as decimal(18)) < 70
残念ながら、このようにすると、エラーメッセージが表示されます。これが他の場所ですでに回答されている場合は申し訳ありません。リンクしてください。クレジットが必要な場合はクレジットを付与します。