2014-10-10 34 views
0

我有一個名爲Pathname的文檔項,它是包含數據庫路徑的文本列表。我需要創建一個視圖,僅包含特定文檔,其中包含Pathname項目中的特定數據庫路徑。 我嘗試了這些聲明,但沒有一個工作:如何在Lotus公式中使用@Contains和@Implode

1. @isMember( 「Databasepath」,路徑名)

2. @Contains(@Implode(路徑名); 「Databasepath」)

感謝您的任何建議。

+1

這已經有一段時間,但我好像記得'@ Contains'可以直接接受文本列表作爲參數。請注意,它是區分大小寫的。 – 2014-10-10 07:51:49

回答

2

代碼中沒有必要使用「implode」。

如果路徑名看起來像這樣:

apps\database1.nsf; apps\database2.nsf; mail\mailfile1.nsf;

,並要過濾掉所有的「應用程序」的路徑,則公式是這樣的:

@Contains(PathName; "apps\\") 

不要忘記複製反斜槓,如果你「硬編碼」它們,因爲它們是轉義字符。

但現在想想含路徑名:

localapps\db1.nsf; apps\db2.nsf; local\apps\db3.nsf

然後上面的公式將選擇所有條目。在這種情況下,這個公式會更好:

@Contains("#" + PathName; "#apps\\") 

或(如果給定的路徑總是開頭):

@Begins(PathName; "apps\\") 
1

如果它是一個真正的文本列表(即「路徑1 \ DB1。 nsf「:」Path2 \ Db2.nsf「:」Path3 \ Db3.nsf「),那麼您應該只能使用equals運算符,因爲如果標量與任何一個標量匹配,則標量與列表值的比較返回true列表值。公式語言語義的這個細節實際上使@Contains的許多用法變得不必要!

也就是說,它應該是這麼簡單

SELECT Pathname = "Path1\\Db1.nsf"; 

,或者如果路徑名尚未標準化時,則

SELECT @uppercase(Pathname) = "PATH1\\DB1.NSF";