Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Inséeer valeur numerique

4 réponses
Avatar
Fdecourt
Bonjour,

Je travaille sur SQL Server, et j'aurais besoin de mettre =E0 jour une
table, en rapla=E7ant le champ d'une colonne par la valeur maximal d'une
autre table.

En soit cela fonctionne sans probl=E8me.

Par contre, la ou ca ne passe pas correctement c'est que je voudrais
que cette valeur soit itn=E9gr=E9 comme INT, et non comme VARCHAR :

UPDATE MATABLE set NUMERO=3D1 where CODE1=3D'2020' and CODE2=3D'5ECV'

A prioiri cela devrait mettre 1 dans la colonne NUMERO, au format
num=E9rique....

Or ce n'est pas ce qui se passe....

Sous SQL server, le format num=E9rique est align=E9 =E0 droite. Dans mon
cas, la valeur se retrouve align=E9 =E0 gauche, alors que toutes les
autres valeurs des autres lignes sont bien align=E9es =E0 droite.

Cette colonne est ensuite utilis=E9 par l'ERP pour =EAtre incr=E9ment=E9.
Comme la valeur ne semble pas =EAtre num=E9rique, toute mon incr=E9mentatio=
n
saute, et je me retrouve avec des valeur improbable (dans le cas qui
nous concerne, l'enregistrement suivant sera 100000000001 au lieu de 2

Comment pourrais-je, en SQL forcer un ENTIER ?
J'ai essayer CONVERT et CAST.

Y aurait-il une autre solution ?

Merci

Cordialement,

F.

4 réponses

Avatar
Fdecourt
Je précise que la colonne NUMERO est de type 'CHAR' et non integer,
mais je souhaite quand même renseigné un entier.
Avatar
TedIF
Après mure réflexion, Fdecourt a écrit :
Je précise que la colonne NUMERO est de type 'CHAR' et non integer,
mais je souhaite quand même renseigné un entier.



UPDATE MATABLE set NUMERO='1' where CODE1='2020' and CODE2='5ECV'
????

--

Dominique
Avatar
Fdecourt
Salut,

Merci pour ta réponse. C'est ce que j'avais testé au début, mais cela
ne fonctionnait pas, car la valeur était systématiquement mise en
alpha...

Ce que j'ai du faire (après avoir bien galéré), c'est ajouter X
espaces devant ma valeur, puis transformer ma valeur numérique en
alpha, et l'insérer dans ma table :

UPDATE MATABLE
SET a.numnext=space(12 - LEN(1)) + convert(char, 1)
FROM MATABLE
WHERE CODE1='2020' and CODE2='5ECV'

J'ai bien sur simplifié la requête..... en réalité, à la place de 1,
je vais chercher une valeur dans une autre table....

La difficulté venait, et je m'en suis rendu compte tard, du mode de
fonctionnement de l'ERP.

Cordialement

F.
Avatar
WOLO Laurent
Il suffit que vous puissier modifier le tyde de données du champs
"Fdecourt" a écrit dans le message de
news:
Bonjour,

Je travaille sur SQL Server, et j'aurais besoin de mettre à jour une
table, en raplaçant le champ d'une colonne par la valeur maximal d'une
autre table.

En soit cela fonctionne sans problème.

Par contre, la ou ca ne passe pas correctement c'est que je voudrais
que cette valeur soit itnégré comme INT, et non comme VARCHAR :

UPDATE MATABLE set NUMERO=1 where CODE1='2020' and CODE2='5ECV'

A prioiri cela devrait mettre 1 dans la colonne NUMERO, au format
numérique....

Or ce n'est pas ce qui se passe....

Sous SQL server, le format numérique est aligné à droite. Dans mon
cas, la valeur se retrouve aligné à gauche, alors que toutes les
autres valeurs des autres lignes sont bien alignées à droite.

Cette colonne est ensuite utilisé par l'ERP pour être incrémenté.
Comme la valeur ne semble pas être numérique, toute mon incrémentation
saute, et je me retrouve avec des valeur improbable (dans le cas qui
nous concerne, l'enregistrement suivant sera 100000000001 au lieu de 2

Comment pourrais-je, en SQL forcer un ENTIER ?
J'ai essayer CONVERT et CAST.

Y aurait-il une autre solution ?

Merci

Cordialement,

F.