Conversion de varchar en entier
bonjour,
comment convertir des varchar en entier ?
Citation:
select replace( substr( DMOF, instr(DMOF,'rato')+8, (instr(DMOF,'FN')-1) - (instr(DMOF,'rato')+7) ),'', null )
from PPM_P where IDEN='383545';
affiche 16
c 'est à dire
Citation:
replace( substr( DMOF, instr(DMOF,'rato')+8, (instr(DMOF,'FN')-1) - (instr(DMOF,'rato')+7) ),'', null ) est égal à 16
mais pourquoi alors çà ne marche pas quand je fais
Citation:
select DMOF from PPM_P
where IDEN='383545' and
replace( substr( DMOF, instr(DMOF,'rato')+8, (instr(DMOF,'FN')-1) - (instr(DMOF,'rato')+7) ),'', null )=16;
ou
Citation:
select DMOF from PPM_P
where IDEN='383545' and
replace( substr( DMOF, instr(DMOF,'rato')+8, (instr(DMOF,'FN')-1) - (instr(DMOF,'rato')+7) ),'', null )='16';
j'ai toujours ce message
Citation:
ORA-00936: missing expression
sincères mercis
lastmagik
re formulation de la question
bonjour à tous et à tedo01,
merci tedo01 tu as raison il y a un espace
mais avec :
Code:
1 2
|
select SLAM from PPM_P where IDENT='3545'; |
ce qui m'interresse c'est que avec quelle commande je dois faire pour enlever tous les espaces dans SLAM.
une fois les espaces enlevés j'ai '4518' mais en tant que chaîne de caractères.
et ensuite comment '4518' convertir en entier 4518.
Code:
1 2 3 4 5 6
|
select
to_number( REPLACE( SLAM ,'', null ) )
from PPM_P
where IDENT='3545'; |
mais çà ne marche pas que dois je faire pour enlever les espaces, et ensuite faire la conversion en entier ?
sincères mercis
lastmagik
meme formule mais différente réponse
bonjour à tou et à pacmann,
je fais les fonctions REPLACE et TO_NUMBER mais elles ne marchent sur la table PPM. Pourtant elles marchent très bien avec dual.
dessous, on voit bien que les espaces sont bien enlevées
Code:
1 2 3 4 5 6
|
SQL> select '>' || replace( substr('123456 89 1 23',6,7) ,' ','' ) || '<' as sali from dual;
SALI
------
>6891< |
dessous, on voit que les espaces ne sont pas enlevées
Code:
1 2 3 4 5 6 7 8 9 10 11
|
SQL> select '>' || REPLACE(
substr( DMOF, instr(DMOF,'rat_idx')+7, (instr(DMOF,'FN')-1)
- (instr(DMOF,'rat_idx')+6) ) ,' ', '') || '<'
as sali
from PPM
where IDEN='3545';
SALI
-----------------
> 16 < |
pour to_number c'est aussi la même chose
dessous on voit bien que to_number marche
Code:
1 2 3 4 5 6
|
SQL> select to_number( replace( substr('123456 89 1 23',6,7) ,' ','' ) ) as sali from dual;
SALI
----------
6891 |
dessous, premierement on va isoler 16
Code:
1 2 3 4 5 6 7 8 9 10
|
SQL> select '>' ||
substr( DMOF, instr(DMOF,'rat_idx')+7+1, (instr(DMOF,'FN')-1-1-1)
- (instr(DMOF,'rat_idx')+6) ) || '<' as sali
from PPM
where IDENT='3545';
SALI
--------------------------------------------------------------------------------
>16< |
deuxiement nous allons enlever > et <
Code:
1 2 3 4 5 6 7 8 9 10 11
|
SQL> select
substr( DMOF,
instr(DMOF,'rat_idx')+7+1, (instr(DMOF,'FN')-1-1-1) - (instrDMOF,'rat_idx')+6) )
as sali
from PPM
where IDENT='3545';
SALI
--------------------------------------------------------------------------------
16 |
maintenant je vais faire to_number et ça ne marche pas
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
SQL> select
to_number( substr( DMOF, instr(DMOF,'rat_idx')+7+1,
(instr(DMOF,'FN')-1-1-1) - (instr(DMOF,'rat_idx')+6) ) )
as sali
from PPM
where IDENT='3545';
*
ERROR at line 1:
ORA-01722: invalid number |
rappelons que
Code:
1 2 3
|
Name Type
DMOF VARCHAR2(300) |
ma conclusion est la replace et to_number marchent bien mais pas pour le champ DMOF de ma la table PPM.
merci beaucoup
lastmagik
liste des caractères insécables
bonjour à tous et à waldar,
merci waldar pour ta réponse.
oui j'ai essayé les codes que tu m'as proposé ils m'ont beaucoup aidé.
mais est ce que tu peux me donner la liste des espaces insécables :
j'ai fait l'éxperience il suffit de faire la commande
Code:
1 2
|
replace(DMOFIELD,chr(49824),'') |
et l'espace insecable est remplacé.
mais est ce que tu pourras me donner la liste des code des espaces et des espaces insécables car je n'ai pas encore réussi quelle est le code de l'espace à remplacer.
et je vais essayer une à une les code avec la fonction replace
sincères mercis
lastmagik