2008-09-23 3 views
0

Я использую REPLACE в представлении SQL, чтобы удалить пробелы из номера свойства. Эта функция настраивается как REPLACE (pin, '', ''). На зеленом экране запрос выглядел отлично. Во всем остальном мы получаем шестнадцатеричные значения символов в поле. Я уверен, что это кодировка, но как мне ее исправить?Weird Output на SQL REPLACE

Вот заявление, которое я использовал для создания представления:

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: Я отправил ответ ниже.

ответ

2

В итоге мы использовали concat и substring для получения желаемых результатов.

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 
0

Попробуйте использовать NULL, а не пустую строку. то есть REPLACE (RCAPIN, '', NULL)

+0

Это не займет NULL. – 2008-09-23 20:06:27

1

Проблема здесь может заключаться в том, что то, что вы считаете пустым символом в этом поле, на самом деле является другим непечатаемым символом.

Вы можете использовать следующий SQL, чтобы увидеть, что ASCII символ находится на 4-й позиции:

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

Тогда вы смогли бы использовать замены для этого символа вместо пустого пространства:

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