次のような非常に単純な選択ステートメントがあります
SELECT Column-Name
FROM Object
WHERE ID = 123
はColumn-Name
動的に生成されます。列が存在しない場合、空の文字列を取得する可能性はありますか?
次のような非常に単純な選択ステートメントがあります
SELECT Column-Name
FROM Object
WHERE ID = 123
はColumn-Name
動的に生成されます。列が存在しない場合、空の文字列を取得する可能性はありますか?
これは SQL Server の巨大なハッキングです
SQL はバッチ ベースです。データベース エンジンに送信されると、バッチ全体が解析され、プランがコンパイルされます。列またはオブジェクトが存在しない場合は、エラーが発生します。
メタデータをテストして、存在するかどうかを確認し ( COLUMNPROPERTY
) 、別のバッチに含めるEXEC
ために使用できます。SELECT
IF COLUMNPROPERTY(OBJECT_ID('Object'), 'Column-Name', 'ColumnID') IS NOT NULL
EXEC ('SELECT Column-Name FROM Object WHERE ID = 123')
ELSE
SELECT '' AS Column-Name;
個人的には、これが実稼働コードに含まれていたり、データベース サーバーで実行されているとは思っていませんでした。
desc object
または同様のことを行って、クエリを実行する前に列名が存在するかどうかを検証してみませんか? そうしないと、SQL エラーを回避するために面白いことをすることになります