0

次のような非常に単純な選択ステートメントがあります

SELECT Column-Name
FROM Object
WHERE ID = 123

Column-Name動的に生成されます。列が存在しない場合、空の文字列を取得する可能性はありますか?

4

2 に答える 2

0

これは 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;

個人的には、これが実稼働コードに含まれていたり、データベース サーバーで実行されているとは思っていませんでした。

于 2013-02-20T08:37:44.350 に答える
0

desc objectまたは同様のことを行って、クエリを実行する前に列名が存在するかどうかを検証してみませんか? そうしないと、SQL エラーを回避するために面白いことをすることになります

于 2013-02-20T08:40:07.987 に答える