2009-08-06 6 views
1

J'utilise la commande SQL ci-dessous pour mettre à jour une colonne appelée Address, la valeur contient des retours à la ligne et je veux les remplacer par un point-virgule. Dans Query Analayzer, l'aperçu est parfait mais lorsque je vérifie les données dans Enterprise Manager (MS SQL 2000), je vois toujours les carrés, c'est-à-dire les retours à la ligne. Est-ce que je ne commets pas le changement? Où vais-je mal? MerciLa commande SQL ne change pas de données

alt text http://i29.tinypic.com/2ih9pbd.png

+0

Ce poste clarifie votre question actuelle, mais vous pourriez peut-être aussi envie de lire un livre de débutant sur SQL. Sans vouloir offenser, je viens de trouver qu'il est beaucoup plus facile d'apprendre les bases en lisant un livre au lieu de recueillir des connaissances sur le Web. –

Répondre

11

Vous devez utiliser une instruction UPDATE!

Le remplacement dans le SELECT modifie simplement la sortie et non les données de la table.

BEGIN TRAN 
UPDATE Customers SET Address = REPLACE(Address, char(10) + char(13), ' ') .... etc 

--Check you like the change 
SELECT * FROM Customers 
--COMMIT --uncomment this to commit the changes. 
+1

Quand tout va bien, vous décommentez la partie --COMMIT et l'exécutez à nouveau. En dehors de cela, bonne réponse, juste un peu de clarification. Sinon, nous aurons une nouvelle question ici à stackoverflow. – Gertjan

-1

le problème est le lors de la première replace est terminée dans le texte char (10) et char (13) sont remplacés par « » et la prochaine remplace Nerev ne rien

+1

Pas vrai, les parties où le CHAR (10) et CHAR (13) sont utilisés ** ensemble ** sont remplacés par un espace, quand un CHAR (10) se tient "seul" il deviendra un. Vérifiez les résultats dans son panneau de résultats. – Gertjan

1
UPDATE Customers 
    SET Address = REPLACE(.....) 
1

Lorsque vous effectuez un remplacement à l'intérieur d'une sélection seule la donnée "sélectionnée" est modifiée. Donc, le remplacement est fait juste avant de vous montrer les données. Les données de la table ne sont pas touchées par un select. Les données dans la colonne doit être mis à jour via une déclaration de mise à jour comme:

UPDATE customers SET 
    Address = REPLACE(Address,CHAR(10)+CHAR(13), ' ') 
+1

Si seulement les champs avaient des méthodes comme Remplacer – pjp

+0

:) Bon point. Je vais modifier mon commentaire. – Gertjan

2

Ce serait:

UPDATE customers SET Address = REPLACE(REPLACE(REPLACE(Address,CHAR(10)+CHAR(13),' '),CHAR(10),';'),CHAR(13),';') 
Questions connexes