Informix 11.5 SQL选择回车符和换行符

时间:2017-01-21 00:13:38

标签: sql informix carriage-return linefeed

Informix 11.5

我正在尝试搜索可能存在于VARCHAR字段中的回车符和换行符。首先,我需要一个SELECT语句来表明它们存在。其次,我需要用空格或其他字符替换它们。 我尝试了各种各样的变体:

CHR(10) + CHR(13)

CHR(10) || CHR(13)

CHAR(13) + CHAR(10)

CHAR(13) || CHAR(10)

SELECT CHR(10) from systables;

所有内容都会出错:Routine (chr) can not be resolved.

我一直在搜索,但却找不到有用的东西,而且我确定这很容易让人觉得愚蠢。

2 个答案:

答案 0 :(得分:2)

从IIUG

获取ASCII包

IDS 11.70中添加了CHR()功能;它不在IDS 11.50中。

好消息是您可以添加该功能,因为IDS是一个可扩展的服务器。对您而言,更好的消息是,您可以IIUG web site部分Software ArchiveMiscellaneous中的ascii获取相关代码。{/ p>

这应该可以让你做你需要的。 (注意:在任何服务器内置了支持之前,我写回代码的方式。)

Windows使事情变得更复杂

  

我正在上传ascii.unl文件,但我收到的错误是第13行的列数不匹配。您之前看过这个吗?我在Windows 2008上。错误是:

     
      
  • 846: Number of values in load file is not equal to number of columns.
  •   
  • 847: Error in load file line 13.
  •   

我之前没见过,但是我还没有在Windows上试过这个文件......好吧,让我们说Windows上的生活比在Unix上变得更加棘手(而且这一点并非如此) #39;在Unix上就这么简单。)

首先,数据文件需要具有CRLF行结尾,而不是Unix上标准的仅NL行结尾。 (注意,NL,换行符是LF的另一个名称,换行符 - 又名'\n'。)对于卸载文件中的大多数行,这不是问题。

可能存在问题的两个条目分别是CR和LF - 条目13和10。理论上,如果第10行的条目包含(以C字符串表示法)"10|\\\n\r\n"(即10,管道,反斜杠,换行符,CRLF),那么一切都应该没问题;第10行没有错误消息表明它没问题。

同样,第13行的条目是"13|\r\r\n",这显然会引起悲伤。最简单的试用方法是在这里添加一个反斜杠:"13|\\\r\r\nn"。反斜杠说"下一个字符没有特殊含义"。如果这不起作用,我们可能必须尝试使用​​hex-escape表示法:"13|\\0d\r\n" - 并使用dbaccess -X启用十六进制转义符号。

幸运的是,这两个(或两个)中的一个将起作用。如果两者都不起作用,请回来,我们会尝试考虑别的事情。

答案 1 :(得分:0)

根据我的上述评论: 我上传了ascii.unl文件,我收到第13行的列数不匹配的错误。您之前看过这个吗?我在Windows 2008上.846:加载文件中的值数不等于列数。 847:加载文件第13行出错。

这是我在ascii.unl文件中看到的内容。

ascii.unl

如果我把它放入MS Word并打开Show Formatting / Paragraph标记,它会显示:

enter image description here

enter image description here