sql >> Database >  >> RDS >> Sqlserver

Bouw een dynamische lijst met INSERT-instructiewaarden

Overweeg het volgende commando:

SELECT 'SELECT ' +
    STUFF ((
        SELECT ', [' + name + ']'
        FROM syscolumns
        WHERE id = OBJECT_ID('Table') AND
            name <> 'me'
        FOR XML PATH('')), 1, 1, '') +
    ' FROM [Table]'

Dat zal een SELECT . bouwen verklaring voor een specifieke tabel. Een INSERT maken verklaring kan het er als volgt uitzien:

SELECT @sql = 'INSERT INTO [Table] (' +
    STUFF ((
        SELECT ', [' + name + ']'
        FROM syscolumns
        WHERE id = OBJECT_ID('Table') AND
            name <> 'me'
        FOR XML PATH('')), 1, 1, '') +
    ') VALUES (' +
    STUFF ((
        SELECT ', @' + name
        FROM syscolumns
        WHERE id = OBJECT_ID('Table') AND
            name <> 'me'
        FOR XML PATH('')), 1, 1, '') + ')'

Er zijn natuurlijk veel manieren om bij de INSERT . te komen verklaring, vorm het naar uw wens.



  1. Left Join geeft niet alle rijen terug

  2. Geen toegang tot mysql-database (draaiend op AWS-instantie) vanuit mijn java-toepassing

  3. #1071 - Opgegeven sleutel was te lang; maximale sleutellengte is 1000 bytes

  4. SQL GROUP BY-clausule voor beginners