À l'aide de Remplacer dans une mise à jour de commande DB2
Je avoir un coup d'exigence dans laquelle j'ai besoin de mettre à jour les données dans ma db qui est corrompu.
J'ai un peu de colonnes de texte lorsque le texte contient des   et bien que nous avons corrigé le problème dans le code que j'ai encore besoin de corriger la corruption des données dans la db.
Je pense que je peux faire
UPDATE table_name
SET column_name=(
SELECT REPLACE(colum_name, ' ', '')
FROM table_name
WHERE id=1234)
WHERE id=1234
mais je vais le faire individuellement pour chaque ligne. Est-il plus facile de requête qui va vérifier toutes les lignes dans la colonne particulière et supprimer les   tag?
Merci pour l'aide.
- Ce serait le retour de plusieurs lignes et de mise à jour échoue.
- Même avec la sous-requête en corrélation?
UPDATE table_name t1 SET t1.column_name=( SELECT REPLACE(t1.column_name, ' ', '') FROM table_name t1)
- DB2 erreur 811 LE RÉSULTAT D'UN INTÉGRÉ à l'INSTRUCTION SELECT OU UNE sous-sélection DANS LA CLAUSE SET D'UNE INSTRUCTION de mise à JOUR EST UNE TABLE DE PLUS d'UNE LIGNE, OU LE RÉSULTAT D'UNE sous-REQUÊTE DE BASE d'UN PRÉDICAT EST PLUS d'UNE VALEUR
Vous devez vous connecter pour publier un commentaire.
Je pense que d'autres experts sont de compliquer à l'excès la solution qui vraiment ne nécessite qu'une simple
UPDATE
:WHERE
clause assurez-vous que est la fausse valeur. Ne pas accélérer les choses à l'encontre d'un index (full table scan ici de gens), il suffit de couper vers le bas sur le nombre de lignes effectivement mises à jour (et le nombre de problèmes potentiels qui pourraient être créés).Vous pouvez le faire avec une procédure stockée ou un bloc anonyme
Il devrait être quelque chose comme ça.