使用FQL处理通配符

时间:2012-05-29 19:52:33

标签: facebook facebook-fql

我想使用通配符从Facebook用户表中获取数据。但是,我猜当前的FQL不支持通配符,或者我错过了一些东西。

此外,它也为LIKE提供了错误。

目前,我正按以下方式执行

SELECT uid,username,first_name,last_name FROM user WHERE first_name LIKE'%ab%'order by first_name LIMIT 0,20;

我试过*,?,_等。

尽管如此,我还是无法得到它。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

有一种方法可以做类似的事情,但即便如此,你也不能从api那里提出这样的问题。

这是您查询的“工作”版本:

SELECT uid, username, first_name, last_name
FROM user
WHERE strpos(lower(first_name), 'ab') >= 0
ORDER BY first_name
LIMIT 0,20

此查询的问题在于它生成this error

  

您的陈述不可转化。 WHERE子句必须包含   可索引的列。这些列在链接的表中标有*   来自http://developers.facebook.com/docs/reference/fql

您基本上没有办法向所有用户询问,仅基于特定用户,例如,这有效:

SELECT uid, username, first_name, last_name
FROM user
WHERE strpos(lower(first_name), 'ab') >= 0 AND uid IN ("user_id_1", "user_id_2", ...,"user_id_n")
ORDER BY first_name
LIMIT 0,20

答案 1 :(得分:1)

FQL不支持LIKE运算符。您可以使用支持的strpos函数对支持的表索引执行部分字符串搜索,但none of the name fields on the user table are indexable