2008-09-23 17 views
0

我在SQL视图中使用REPLACE从属性号中删除空格。这个函数的设置就像这个REPLACE(pin,'','')。在绿屏上查询看起来很好。在其他任何事物中,我们都可以获得字段中字符的十六进制值。我确定它是一种编码的东西,但我该如何解决它?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 

更新:我下面贴了答案。

回答

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而不是空字符串。即替换(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