我有一個變壓器的約束與此:找出這個Trim()函數在做什麼?
Trim(CollectFrom.collect_from,"-","A")<=TheDate
這裏是collect_from樣子:
'2017-02-27'
,這裏是TheDate的樣子:
'20170227'
我不清楚這個Trim()函數是如何工作的。我的第一個猜測是它給了它與'TheDate'相同的格式,但我不明白「A」的說法。有人可以解釋嗎?
我有一個變壓器的約束與此:找出這個Trim()函數在做什麼?
Trim(CollectFrom.collect_from,"-","A")<=TheDate
這裏是collect_from樣子:
'2017-02-27'
,這裏是TheDate的樣子:
'20170227'
我不清楚這個Trim()函數是如何工作的。我的第一個猜測是它給了它與'TheDate'相同的格式,但我不明白「A」的說法。有人可以解釋嗎?
TRIM()的說明書頁面說不應該工作。
當我嘗試運行你展示什麼,我得到的錯誤:
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
手冊上說,你需要TRIM({BOTH|LEADING|TRAILING} [char] FROM source)
:(使用的SQL命令解釋器是我SQLCMD)
SQL[2407]: select trim(both '-' from '2017-02-12') from dual;
2017-02-12
SQL[2408]: select trim(both '-' from '2017-02-12-') from dual;
2017-02-12
SQL[2409]: select trim(both '-' from '-2017-02-12-') from dual;
2017-02-12
SQL[2410]:
有人有可能定義了一個TRIM函數,該函數需要三個參數 - 這是從這裏檢測不到的。您必須查看數據庫的系統目錄才能找到。
OTOH,似乎沒有被允許,或者:
SQL[2411]: create function trim(a varchar(10), b varchar(20), c varchar(30)) returning varchar(64);
return trim(leading from a) || ' ' || trim(both from b) || ' ' || trim(trailing from c);
end function;
SQL -9710: Overloading of built-in functions is not allowed.
SQLSTATE: IX000 at /dev/stdin:8
SQL[2412]:
的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))執行此操作,您可以使用Informix實用程序或使用ODBC/JDBC的Python/Jython程序執行此操作:https://code.activestate.com/recipes/576621-dump-informix-schema-to-text 告訴我們你使用什麼版本的Informix。
TRIM(CollectFrom.collect_from, 「 - 」, 「A」)
這裏甲裝置刪除所有出現的 - 從輸入字符串CollectFrom.collect_from ''。因此你得到'20170227'。這裏是可以提供更多關於修剪功能的信息的文件。