Saída estranho no SQL REPLACE
-
02-07-2019 - |
Pergunta
Eu estou usando REPLACE em uma exibição SQL para remover os espaços a partir de um número de propriedade. A função é configuração como esta REPLACE (pin, '', ''). Na tela verde a consulta parecia bem. Em qualquer outra coisa que obter os valores hexadecimais dos caracteres no campo. Tenho certeza de que é uma coisa de codificação, mas como faço para corrigir isso?
Aqui está a declaração que eu usei para criar o ponto de 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
UPDATE: eu postei a resposta abaixo
.Solução
Nós acabamos usando concat e substring para obter os resultados que queríamos.
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
Outras dicas
O problema aqui pode ser que o que você acha que é o espaço em branco que o campo é realmente algum outro caractere não imprimível.
Você pode usar o seguinte SQL para ver o que caracteres ASCII está na 4ª posição:
select ascii(substr(RCAPIN,4,1))
FROM YOUR-TABLE
Em seguida, você seria capaz de usar um substituir para que o personagem em vez do espaço em branco:
select replace(RCAPIN,chr(9))
FROM YOUR-TABLE
Tente usar NULL em vez de uma cadeia vazia. ou seja, REPLACE (RCAPIN, '', NULL)