2015-04-30 4 views
0

J'ai besoin de mettre à jour une valeur dans plusieurs tables, lors de la migration d'une base de données de production vers un environnement de test. Le nom des tables peut être trouvé dans une autre table. Comment puis-je faire ceci?SQL comment mettre à jour le nom de tablename basé sur la table d'une autre colonne de table

Je veux dire:

for each value$ in select replace(tablename,' ','') from table1 

update value$ set replace(column1,'A','B') 

Il ressemble à une instruction SQL imbriqué.

Répondre

2

Vous devez créer un SQL dynamique pour cela. Je préfère le construire en une fois et exécuter dans son ensemble:

declare @sql varchar(max) = '' 
select @sql += ' 
    update ' + QUOTENAME(replace(tablename,' ','')) + ' 
     set column1 = replace(column1,''A'',''B'')'  
from table1 

exec (@sql) 
+0

Remarque: non testé - mais vous donnez la bonne idée. –

+0

Je pense que vous aurez juste besoin de 'set column1 = replace (column1, '' A '', '' B '')' - manque actuellement le nom de la colonne que vous définissez, et échappe les guillemets simples autour des valeurs de chaîne. – Bridge

+0

@Bridge: Correction - taa - juste copié la mise à jour réelle de l'OP. –