2017-02-24 25 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

相关问题