sql >> データベース >  >> RDS >> Sqlserver

SQL:動的変数名

    まあ、それはきれいではありませんが、できます:

    if @loopcntr = 1
        set var01 = 'somevalue'
    else if @loopcntr = 2
        set var02 = 'whatever'
    else if . . .
    

    これは、代替案を考えるほど不快なものです。おお、これは良いものだ。テーブル変数を定義し、値ごとに行を追加するだけです:

    declare @vars table (
        id int identity(1, 1),
        loopcntr int,
        value varchar(255)
    );
    
    . . .
    -- inside the loop
        insert into @vars(loopcntr, value)
            select @loopcntr, 'whatever';
    

    変数を取得したい場合、次のことができます:

    declare @var varchar(255);
    select @var = value from @vars where loopcntr = <the one I want>;
    


    1. 同じテーブル名の挿入クエリ内でselectクエリを使用します

    2. MySQLで外部キーの追加がエラーコード1005、番号150で失敗する

    3. 使用するJOINの種類

    4. DATEDIFF-NULLをNOW()に置き換えます