Domanda

Sto usando REPLACE in una vista SQL per rimuovere gli spazi da un numero di proprietà. La funzione è configurata in questo modo SOSTITUISCI (pin, '', ''). Sullo schermo verde la query sembrava a posto. In qualsiasi altra cosa otteniamo i valori esadecimali dei personaggi nel campo. Sono sicuro che è una cosa di codifica, ma come posso ripararlo?

Ecco la frase che ho usato per creare la vista:

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

AGGIORNAMENTO: ho pubblicato la risposta di seguito.

È stato utile?

Soluzione

Abbiamo finito per usare concat e sottostringa per ottenere i risultati desiderati.

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

Altri suggerimenti

Il problema qui potrebbe essere che quello che pensi sia il carattere vuoto in quel campo è in realtà un altro personaggio non stampabile.

Puoi usare il seguente SQL per vedere quale carattere ASCII è in quarta posizione:

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

Quindi potresti usare un sostituto per quel personaggio invece dello spazio vuoto:

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

Prova a utilizzare NULL anziché una stringa vuota. ovvero SOSTITUIRE (RCAPIN, '', NULL)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top