2017-02-28 46 views
1

我有一個變壓器的約束與此:找出這個Trim()函數在做什麼?

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

這裏是collect_from樣子:

'2017-02-27' 

,這裏是TheDate的樣子:

'20170227' 

我不清楚這個Trim()函數是如何工作的。我的第一個猜測是它給了它與'TheDate'相同的格式,但我不明白「A」的說法。有人可以解釋嗎?

回答

3

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]: 
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))執行此操作,您可以使用Informix實用程序或使用ODBC/JDBC的Python/Jython程序執行此操作:https://code.activestate.com/recipes/576621-dump-informix-schema-to-text 告訴我們你使用什麼版本的Informix。