私は2つのシステム間でデータを集計するシナリオを持っています。残念ながら私はVisual Studioでテーブルアダプターを使用しています。上記の場合where句でキャストを行ってから別のフィールドを最初にチェックすると失敗しますか?
Select * from prsnpsht where Cast(snp_check as bigint) > 10 and sourcereference Is Null
Union ALL
Select * from prsnpsht where sourcereference is not null
、最初のシステムからsnp_checkが正しくBIGINTするsnp_checkでキャストし、我々はsourcereferenceがnullであるため、データが最初にシステムから知っているだろう、すべての数値になります。 2番目のシステムはsnp_checkフィールドに他の文字を持つことができ、bigintにキャストしようとすると失敗します。
私はクエリの構造をそのままにしておくと、ソース参照条件を分析する前にすべてのチェックを大きなintにキャストしようとしますか、SQL Serverはデータを制限する必要があることを十分に知っていますそれはsnp_checkフィールドをキャストしようとする前に?
これは重複した質問であれば事前にお詫びしますが、以前に回答があった場合は見つけられませんでした。
クエリで参照される「2つのシステム」が表示されません。 –
@ GordonLinoff質問が論理短絡に関するものだと思うが、その懸念を避けるためにクエリを書き直すことができる。 – DavidG
同じテーブルに書き込む2つのシステムがあります。 snp_checkフィールドは、両方を可能にするnvarchar(25)です。クエリはレポートのためのものです。 –