SQL REPLACE上的奇怪输出

时间:2008-09-23 20:02:49

标签: sql ibm-midrange

我在SQL视图中使用REPLACE从属性编号中删除空格。该功能设置为此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

更新:我在下面发布了答案。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

这里的问题可能是你认为该字段中的空白字符实际上是其他一些不可打印的字符。

您可以使用以下SQL查看第4位的ASCII字符:

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

然后你就可以使用该角色的替换而不是空格:

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

答案 2 :(得分:0)

尝试使用NULL而不是空字符串。即REPLACE(RCAPIN,'',NULL)