replace(...) sous condition.

replace(...) sous condition. - SQL/NoSQL - Programmation

Marsh Posté le 23-01-2006 à 14:48:49    

Bonjours.
Je suis face un probleme dont je ne sais pas comment le resoudre sans faire un truc de barbare.
J'ai un champs qui contient des noms de fichiers sous cette forme fichier1,fichier2,fichier3
Je voudrais pouvoire faire une modification de ces données en une seul requete si possible, c'est à dire : fichier1,fichier3 fichier2 a été retiré. j'ai fais requete qui me permet de le faire :

Code :
  1. UPDATE tb_ticket SET  tck_fichier = REPLACE(CAST(tck_fichier AS VARCHAR(250)),'fichier2','') WHERE tck_id=123"


 
Probleme : c'est que lorsque je retire le fichier2 les données deviennent ainsi fichier1,,fichier2.  
Si je supprime fichier1 ça va donner ceci :  ,fichier2,fichier3
Si je supprime fichier3 => fichier1,fichier2,
 
Comment puis-je trouver la meilleur solution avec le mininum de requete?  
merci.

Reply

Marsh Posté le 23-01-2006 à 14:48:49   

Reply

Marsh Posté le 23-01-2006 à 16:29:32    

Je degage du bec apparement :/

Reply

Marsh Posté le 23-01-2006 à 16:51:26    

Je vois pas comment faire ça simplement...pour moi c'est un pb de structure de ta base, là...[:pingouino]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 23-01-2006 à 17:01:45    

Ben non, c'est juste que les noms des fichiers sont séparé par des point virgule dans un enregistrement mais des fois j'ai besoin de faire des mises à jour sur le fichier, elles peuvent se rajouter ou se supprimer.

Reply

Marsh Posté le 23-01-2006 à 17:03:11    

euh, ben si.
Aller coller plusieurs infos sous forme de texte avec séparateur dans un seul champ, c'est une mauvaise structure.[:skeye]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 23-01-2006 à 17:04:16    

Berceker United a écrit :

Ben non, c'est juste que les noms des fichiers sont séparé par des point virgule dans un enregistrement mais des fois j'ai besoin de faire des mises à jour sur le fichier, elles peuvent se rajouter ou se supprimer.


j'essay avec cette requete

Code :
  1. UPDATE tb_ticket SET  tck_fichier = RIGHT(tck_fichier,LEN(CAST(tck_fichier AS VARCHAR(250)))-1) WHERE tck_fichier LIKE ',%'


Pour supprimer une virgule devant : ,fichier2,fichier3
mais j'ai une erreur "Type de données text incorrect pour l'argument 1 de la fonction right."


Message édité par Berceker United le 23-01-2006 à 17:05:57
Reply

Marsh Posté le 23-01-2006 à 17:04:46    

skeye a écrit :

euh, ben si.
Aller coller plusieurs infos sous forme de texte avec séparateur dans un seul champ, c'est une mauvaise structure.[:skeye]


Désolé mais le choix vient pas de moi  [:ciler]

Reply

Marsh Posté le 23-01-2006 à 17:12:10    

Bon ben j'ai trouvé, je trouve que sqlserver chipote  :heink:  
Voila ce qui peut me retirer la virgule devant.

Code :
  1. UPDATE tb_ticket SET tck_fichier = RIGHT(CAST(tck_fichier AS VARCHAR(255)),LEN(CAST(tck_fichier AS VARCHAR(255)))-1) WHERE tck_fichier LIKE ',%'


Je ne comprend pas pourquoi il faut que je convertisse le type de champs.  :??:  pourquoi ceci ne peut pas fonctionner ?

Code :
  1. UPDATE tb_ticket SET tck_fichier = RIGHT(tck_fichier,(LEN(tck_fichier)-1) WHERE tck_fichier LIKE ',%'

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed