Question

J'utilise REPLACE dans une vue SQL pour supprimer les espaces d'un numéro de propriété. La fonction est configurée comme ceci REPLACE (pin, '', ''). Sur l'écran vert, la requête semblait correcte. Dans toute autre chose, nous obtenons les valeurs hexadécimales des caractères du champ. Je suis sûr que c'est un problème d'encodage, mais comment puis-je résoudre ce problème?

Voici la déclaration que j'ai utilisée pour créer la vue:

CREATE VIEW RLIC2GIS AS SELECT REPLACE(RCAPIN, ' ', '') AS 
RCAPIN13 , RLICNO, RONAME, ROADR1, ROADR2, ROCITY, ROSTAT, ROZIP1, 
ROZIP2, RGRID, RRADR1, RRADR2, RANAME, RAADR1, RAADR2, RACITY,     
RASTAT, RAZIP1, RAZIP2, REGRES, RPENDI, RBLDGT, ROWNOC, RRCODE,    
RROOMS, RUNITS, RTUNIT, RPAID, RAMTPD, RMDYPD, RRFUSE, RNUMCP,     
RDATCP, RINSP, RCAUKY, RCAPIN, RAMTYR, RYREXP, RDELET, RVARIA,     
RMDYIN, RDTLKI, ROPHN1, ROPHN2, ROCOM1, ROCOM2, RAPHN1, RAPHN2,    
RACOM1, RACOM2, RNOTES FROM RLIC2

MISE À JOUR: j'ai posté la réponse ci-dessous.

Était-ce utile?

La solution

Nous avons finalement utilisé concat et sous-chaîne pour obtenir les résultats souhaités.

CREATE VIEW RLIC2GIS AS                                  
SELECT CONCAT(SUBSTR(RCAPIN,1,3),CONCAT(SUBSTR(RCAPIN,5,2),      
CONCAT(SUBSTR(RCAPIN,8,2), CONCAT(SUBSTR(RCAPIN,11,3),           
SUBSTR(RCAPIN, 15,3))))) AS CAPIN13, RLICNO, RONAME, ROADR1,     
ROADR2, ROCITY, ROSTAT, ROZIP1, ROZIP2, RGRID, RRADR1, RRADR2,   
RANAME, RAADR1, RAADR2, RACITY, RASTAT, RAZIP1, RAZIP2, REGRES,  
RPENDI, RBLDGT, ROWNOC, RRCODE, RROOMS, RUNITS, RTUNIT, RPAID,   
RAMTPD, RMDYPD, RRFUSE, RNUMCP, RDATCP, RINSP, RCAUKY, RCAPIN,   
RAMTYR, RYREXP, RDELET, RVARIA, RMDYIN, RDTLKI, ROPHN1, ROPHN2,  
ROCOM1, ROCOM2, RAPHN1, RAPHN2, RACOM1, RACOM2, RNOTES FROM RLIC2

Autres conseils

Le problème ici pourrait être que ce que vous pensez être le caractère vide dans ce champ est en réalité un autre caractère non imprimable.

Vous pouvez utiliser le code SQL suivant pour déterminer le caractère ASCII en 4ème position:

select ascii(substr(RCAPIN,4,1)) 
FROM YOUR-TABLE

Vous pourrez alors utiliser un remplacement pour ce caractère au lieu de l'espace vide:

select replace(RCAPIN,chr(9))
FROM YOUR-TABLE

Essayez d’utiliser NULL plutôt qu’une chaîne vide. i.e. REMPLACER (RCAPIN, '', NULL)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top