弄清楚这个Trim()函数在做什么?

时间:2017-02-28 04:34:19

标签: informix datastage

我对变压器有一个约束:

Trim(CollectFrom.collect_from,"-","A")<=TheDate

这就是collect_from的样子:

'2017-02-27'

以下是TheDate的样子:

'20170227'

我不确定这个Trim()函数是如何工作的。我的第一个猜测是它提供的格式与“TheDate&#39;但我不明白&#34; A&#34;论点。有人可以解释一下吗?

3 个答案:

答案 0 :(得分:3)

TRIM()的手册页说不应该有用。

当我尝试运行您显示的内容时,我会收到错误:

e

手册说您需要df.sort <- df[order(df[,"x"]), , drop = FALSE]

SQL[2405]: select trim('2017-02-01', '-', 'A') from dual;
SQL -674: Routine (trim) can not be resolved. 
SQLSTATE: IX000 at /dev/stdin:1
SQL[2406]: select trim('2017-02-01', '-') from dual;
SQL -674: Routine (trim) can not be resolved. 
SQLSTATE: IX000 at /dev/stdin:2

(使用的SQL命令解释器是我的SQLCMD。)

有人可能已经定义了一个带有三个参数的TRIM函数 - 这是从这里无法检测到的。您必须查看数据库的系统目录才能找到它。

OTOH,似乎也不允许,

TRIM({BOTH|LEADING|TRAILING} [char] FROM source)

答案 1 :(得分:2)

Informix 11.50内置了trim()函数:https://www.ibm.com/support/knowledgecenter/SSGU8G_11.50.0/com.ibm.sqls.doc/ids_sqs_1556.htm但它在您的问题中看起来与trim()略有不同,所以我认为您使用某些用户的trim()函数构建

通常trim()只关注字符串开头或结尾处的字符,但在您的示例trim()中必须删除位于字符串中间的-字符。我猜最后一个参数A告诉trim()从源字符串中删除所有这些字符。

要找出trim()函数真正做什么,你必须找到它的来源。您可以使用一些GUI数据库工具(如SQirreL SQL Client(它使用JDBC)),使用dbschema Informix实用程序或使用ODBC / JDBC的Python / Jython程序执行此操作:https://code.activestate.com/recipes/576621-dump-informix-schema-to-text < / p>

告诉我们您使用的是什么版本的Informix会很有帮助。

答案 2 :(得分:0)

修剪(CollectFrom.collect_from, “ - ”, “A”)

此处 A 表示从输入字符串CollectFrom.collect_from 删除所有“ - ”的出现次数。因此你得到'20170227'。这是一份文件,它将提供有关修剪功能的更多信息。

https://www.ibm.com/support/knowledgecenter/en/SSZJPZ_11.5.0/com.ibm.swg.im.iis.ds.parjob.dev.doc/topics/r_deeref_String_Functions.html