Informix 11.5 SQL Select 回车 Return 和换行

Informix 11.5 SQL Select Carriage Return and Line Feed

Informix 11.5

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

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.

我到处搜索,就是找不到任何有用的东西,而且我敢肯定这太简单了。

从IIUG获取ASCII包

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

好消息是您可以添加该功能,因为 IDS 是一个可扩展的服务器。对您来说更好的消息是您可以从 IIUG web site in the Software Archive under the Miscellaneous section as ascii.

获取相关代码

这应该可以让你做你想做的事。 (注意:我写代码的时候 - 在任何服务器内置支持之前。)

Windows 让事情变得更复杂

I was uploading the ascii.unl file and I get an error that the number of columns do not match on line 13. Have you seen this before? I'm on Windows 2008. The errors are:

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

我以前没见过,但我没有在 Windows 上尝试过这个文件,而且……好吧,假设 Windows 上的生活比在 Unix 上更棘手(而且这个位在 Unix 上并不是那么简单)。

首先,数据文件需要有 CRLF 行结尾,而不是 Unix 标准的 NL-only 行结尾。 (请注意,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 启用十六进制转义表示法。

运气好的话,这两个(或两者)之一会起作用。如果都不行,回来我们再想办法。

根据我上面的评论: 我正在上传 ascii.unl 文件,但在第 13 行收到列数不匹配的错误消息。您以前见过吗?我在 Windows 2008。846:加载文件中的值数不等于列数。 847: 加载文件第 13 行出错。

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

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