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 标记,它会显示:
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 标记,它会显示: