2017-02-24 26 views
2

使用airtable api的filterByFormula方法我可以查詢並選擇包含一個特定項目(字符串)的記錄。但是,此查詢只返回只包含該特定字符串的記錄。如何過濾包含給定字符串的airtable記錄,但也可能包含其他記錄?

在這裏搜索airtable api公式文檔: https://support.airtable.com/hc/en-us/articles/203255215-Formula-Field-Reference 不會得到答案。

我有什麼:

base('Table').select({ 
    view: 'Main View', 
    filterByFormula: `Column = "${myFilter}"` 
}).firstPage(function(err, records) { 
    if (err) { console.error(err); reject(err); } 

    records.forEach(function(record) { 
     console.log(record.get('Another Column')); 

    }); 

這再次返回只有myFilter記錄,並沒有包含在給定列的任何額外值的記錄。

編輯:airtable將這些列稱爲「多選」字段類型。

+1

你不能在'> = 0'上使用'SEARCH'或'FIND'函數嗎?像'\'SEARCH(「$ {myFilter}」,Column)> = 0 \''? – haxxxton

+0

把它扔在答案中,我可以接受它。這工作,謝謝你! –

回答

3

似乎airtable支持的0123等同於SEARCH的形式。從該文檔:

SEARCH(find_string,within_string,位置)
返回find_string在within_string,開始於位置的第一次出現的索引。位置默認爲0。

因此,我們可以使用下面爲我們的搜索過濾器值

filterByFormula: `SEARCH("${myFilter}", Column) >= 0` 

這將搜索我們ColumnmyFilter存在和返回任何結果都myFilter位於Column內的一些位置。

注意:值得注意的是,您的myFilter屬性可能最好具有至少2個性能的最小字符數。該文檔也沒有指定不區分大小寫的選項,因此如果您希望返回結果而不考慮大寫或小寫字符,您可能希望將Column"${myFilter}"都包裝在LOWER()函數中。例如

filterByFormula: `SEARCH(LOWER("${myFilter}"), LOWER(Column)) >= 0` 
+0

在包裝中添加忽略大小寫的巨大觸感。 –

+0

你已經關閉了。當找不到字符串時,「SEARCH」似乎返回0。但是,感謝'LOWER'的想法:) – bijancn

+0

@bijancn非常奇怪的是,當沒有找到字符串時會返回0。如果在第一個字母中找到字符串,它是否也返回0或1? – haxxxton

相關問題