ホームページ > データベース > mysql チュートリアル > SQL クエリで変数をテーブル名として使用するにはどうすればよいですか?

SQL クエリで変数をテーブル名として使用するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-23 06:51:09
オリジナル
291 人が閲覧しました

How Can I Use a Variable as a Table Name in SQL Queries?

テーブル名を変数として宣言します

紹介:

静的クエリでテーブル名として変数を使用しようとすると、「テーブル変数を宣言する必要があります」というエラーが発生します。この記事では、テーブル名を動的に設定する正しい方法について説明します。

解決策:

静的クエリの場合、テーブル名と列名は静的である必要があります。ただし、動的クエリでは完全な SQL ステートメントを動的に生成でき、sp_executesql を使用して実行できます。

次のシナリオを考えてみましょう:

<code class="language-sql">declare @tablename varchar(50)
set @tablename = 'test'
select * from @tablename</code>
ログイン後にコピー

テーブル名が動的に割り当てられるため、この静的クエリは失敗します。

動的クエリの例:

次のスクリプトは、動的クエリを使用して 2 つのデータベースのデータを比較する方法を示しています。

<code class="language-sql">declare @schema sysname;
declare @table sysname;
declare @query nvarchar(max);

set @schema = 'dbo'
set @table = 'ACTY'

set @query = '
SELECT * FROM [DB_ONE].' + QUOTENAME(@schema) + '.' + QUOTENAME(@table) + '
EXCEPT
SELECT * FROM [DB_TWO].' + QUOTENAME(@schema) + '.' + QUOTENAME(@table);

EXEC sp_executesql @query</code>
ログイン後にコピー

この例では、テーブル名とスキーマが動的であるため、異なるデータベース内のデータを簡単に比較できます。

注:

動的クエリには慎重な検討とメンテナンスが必要です。ベスト プラクティスについて学ぶには、「動的 SQL の呪いと祝福」などのリソースを参照することをお勧めします。

以上がSQL クエリで変数をテーブル名として使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート