SQL替换上的奇怪输出
我在SQL视图中使用REPLACE从属性号中删除空格。该功能的设置如下所示:替换(插脚,,“”)。在绿色屏幕上,查询看起来不错。在任何其他情况下,我们都会得到字段中字符的十六进制值。我肯定这是一个编码的东西,但我如何修复它 下面是我用来创建视图的语句:SQL替换上的奇怪输出,sql,ibm-midrange,Sql,Ibm Midrange,我在SQL视图中使用REPLACE从属性号中删除空格。该功能的设置如下所示:替换(插脚,,“”)。在绿色屏幕上,查询看起来不错。在任何其他情况下,我们都会得到字段中字符的十六进制值。我肯定这是一个编码的东西,但我如何修复它 下面是我用来创建视图的语句: CREATE VIEW RLIC2GIS AS SELECT REPLACE(RCAPIN, ' ', '') AS RCAPIN13 , RLICNO, RONAME, ROADR1, ROADR2, ROCITY, ROSTAT, ROZI
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
更新:我在下面发布了答案。尝试使用NULL而不是空字符串。i、 e.替换(RCAPIN',NULL)尝试使用NULL而不是空字符串。i、 e.REPLACE(RCAPIN',NULL)我们最终使用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
我们最终使用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
这里的问题可能是你认为那个字段中的空白字符实际上是一些其他不可打印的字符。 您可以使用以下SQL查看第4个位置的ASCII字符:
SELECT ascii(substr(RCAPIN,4,1))
FROM YOUR-TABLE
然后,您可以使用该字符的替换,而不是空白空间:
SELECT replace(RCAPIN,chr(9))
FROM YOUR-TABLE
这里的问题可能是你认为那个字段中的空白字符实际上是一些其他不可打印的字符。 您可以使用以下SQL查看第4个位置的ASCII字符:
SELECT ascii(substr(RCAPIN,4,1))
FROM YOUR-TABLE
然后,您可以使用该字符的替换,而不是空白空间:
SELECT replace(RCAPIN,chr(9))
FROM YOUR-TABLE