UPDATE un morceaux de chaine [Résolu]

Messages postés
61
Date d'inscription
dimanche 8 novembre 2009
Dernière intervention
19 octobre 2010
- - Dernière réponse : cs_coq
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
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 /
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
92
3
Merci
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
*/

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 119 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_coq
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
23
0
Merci
Salut,

C'est surement possible

Example non testé
UPDATE matable
SET etat = SUBSTRING(etat, 12,10) + 'V'
WHERE etat = 'ABC .... A'
Commenter la réponse de nhervagault
Messages postés
61
Date d'inscription
dimanche 8 novembre 2009
Dernière intervention
19 octobre 2010
0
Merci
Ma chaine a une taille variable donc je peut pas utiliser de valeur fixe.

There is no place like 127.0.0.1 /
Commenter la réponse de Nitrakz
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
92
0
Merci
Requiert au minimum SQL Server 2005, si mes souvenirs sont bons.


/*
coq
MVP Visual C#
CoqBlog
*/
Commenter la réponse de cs_coq
Messages postés
61
Date d'inscription
dimanche 8 novembre 2009
Dernière intervention
19 octobre 2010
0
Merci
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 /
Commenter la réponse de Nitrakz
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
92
0
Merci
Oui, à part son nom :p


/*
coq
MVP Visual C#
CoqBlog
*/
Commenter la réponse de cs_coq

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.