UPDATE un morceaux de chaine

Résolu
Nitrakz Messages postés 60 Date d'inscription dimanche 8 novembre 2009 Statut Membre Dernière intervention 19 octobre 2010 - 16 juil. 2010 à 14:04
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 16 juil. 2010 à 16:20
Bonjour à tous,

Je voulais savoir si il était possible de faire un UPDATE uniquement sur un morceaux de chaine, je m'explique:
J'ai un champ qui contient une str avec par exemple: "12345488 45421 V" et je doit UPDATE la table pour mettre le champ a: "12345488 45421 A" (Pour une histoire de changement de statut.

Pour le moment j'utilise une fonction ou j'extraie la chaine, je la modifie mais je suppose que l'on doit pouvoir le faire directement avec une requête.

Sachant que le caractère a modifier est toujours celui le plus a gauche,
Voila, merci la horde !

There is no place like 127.0.0.1 /

6 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
16 juil. 2010 à 15:17
Bonjour,

Si on parle bien de SQL Server, c'est possible assez facilement avec la fonction STUFF.

Si comme tendent à le montrer les exemples on parle bien du caractère le plus à droite et pas le plus à gauche, ça peut donner quelque chose de ce genre :
STUFF(@Str, LEN(@Str), 1, N'A')

Attention, ici nous utilisons la fonction LEN pour déterminer la position du dernier caractère, et cette fonction ne compte pas les espaces en fin de chaine (http://blogs.codes-sources.com/coq/archive/2009/12/08/sql-server-et-la-gestion-des-espaces-en-fin-de-cha-ne-ou-test-test.aspx).

Si on parle de celui de gauche alors c'est encore plus simple :
STUFF(@Str, 1, 1, N'A')



/*
coq
MVP Visual C#
CoqBlog
*/
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
16 juil. 2010 à 15:06
Salut,

C'est surement possible

Example non testé
UPDATE matable
SET etat = SUBSTRING(etat, 12,10) + 'V'
WHERE etat = 'ABC .... A'
0
Nitrakz Messages postés 60 Date d'inscription dimanche 8 novembre 2009 Statut Membre Dernière intervention 19 octobre 2010
16 juil. 2010 à 15:11
Ma chaine a une taille variable donc je peut pas utiliser de valeur fixe.

There is no place like 127.0.0.1 /
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
16 juil. 2010 à 15:20
Requiert au minimum SQL Server 2005, si mes souvenirs sont bons.


/*
coq
MVP Visual C#
CoqBlog
*/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nitrakz Messages postés 60 Date d'inscription dimanche 8 novembre 2009 Statut Membre Dernière intervention 19 octobre 2010
16 juil. 2010 à 15:47
Je suis bien sous SQL server 2005 ou 2008.
Je viens d'essayer et ca fonctionne du feu de dieux ! Merci !

Super cette petite fonction STUFF


There is no place like 127.0.0.1 /
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
16 juil. 2010 à 16:20
Oui, à part son nom :p


/*
coq
MVP Visual C#
CoqBlog
*/
0
Rejoignez-nous