Bonjour,
J'ai besoin de lancer une requete en SQL afin de supprimer le dernier caractere d'un champ (CODART) dans une table (ARTICLE) et "coller" ce caractère dans une autre champ (COMPL)
Quelle serait la syntaxe avec la commande substr ?
Merci.
Version imprimable
Bonjour,
J'ai besoin de lancer une requete en SQL afin de supprimer le dernier caractere d'un champ (CODART) dans une table (ARTICLE) et "coller" ce caractère dans une autre champ (COMPL)
Quelle serait la syntaxe avec la commande substr ?
Merci.
Bonjour,
A adapter à votre SGBD, que vous n'avez pas précisé, || représentant la concaténation (sur Oracle) et length la fonction renvoyant la taille d'une chaine de caractère.Code:
1
2
3
4 UPDATE article SET CODART = substr(CODART,1,length(CODART)-1), COMPL = COMPL || substr(CODART,-1,1);
Bonjour Snipah,
La réponse m'intéresse beaucoup car je suis sur un problème de génération automatique de codes barres.
D'après ce que je comprends, votre réponse correspond à un langage Oracle, serait il possible de le transcrire en SQL
SQL Server 2005
Windev14
WindowsXP
Raptor92
Merci pour la réponse.
Si je veux limiter ma requête à un article CODART spécifique, que faut il modifier ?
SQL est un langage dont la syntaxe est normalisée (ANSI)Citation:
Envoyé par Raptor92
Les éditeurs de SGBD choisissent d'implémenter tout ou partie de la norme, d'y ajouter des extensions sous forme de commandes ou de fonctions.
La requête proposée par Snipah s'écrirait ainsi en respectant la syntaxe normalisée :Code:
1
2
3
4 UPDATE article SET codart = SUBSTRING(codart FROM 1 FOR CHAR_LENGTH(codart) - 1) , compl = compl || SUBSTRING(codart FROM CHAR_LENGTH(codart)) ;
Merci pour votre réponse,
Pour autant, je ne comprends pas le signe "||"Code:compl = compl || SUBSTRING(codart FROM CHAR_LENGTH(codart))
Et en effet, je retrouve ce signe très souvent sur le forum.
Pouvez vous m'expliquez sa signification et surtout comment le taper sur clavier.
Dans la façon que j'ai appris, j'aurais saisi:
Par avance merciCode:WHERE compl = compl AND SUBSTRING(codart FROM CHAR_LENGTH(codart))
Raptor92
PS: Certains m'ont fait remarquer que l'utilisation de WHERE était moins adéquate que JOINN ON, je suis en train de lire les articles de SQLPro à ce sujet et de comprendre les différence en la matière.
Bonjour,
Alors là...............merci beaucoup
Raptor92
Pour en revenie a ma question :
Si je veux limiter ma requête à un article CODART spécifique, que faut il modifier ?
Ajoutez une clause WHERE à la requête d'update :
Code:
1
2
3
4 UPDATE article SET CODART = substr(CODART,1,length(CODART)-1), COMPL = COMPL || substr(CODART,-1,1) WHERE CODART = 'xxx';