2012-05-17 38 views
0

Salesforce自定义对象中的列(id)之一是字符串类型,尽管它始终包含长类型值。我想运行这样的查询。在SOQL中使用字符串比较

其中id> ='123'和id < ='123456';

有没有解决方案?无法更改Salesforce中列的数据类型。

回答

3

数据类型转换不可能作为SOQL语法的一部分。您需要取回完整的结果集并过滤结果。或者,如果您无法更改数据类型,那么也许可以使用公式字段或工作流程更新将该字段复制到隐藏字段中,您可以执行比查询更少的隐藏字段。这不是最佳实践,但如果你真的坚持解决方案,这是一个想法。

最终,如果需要基于文本或将数据类型更改为数字,则正确答案将填充数字前导零。

-1

如果你的ID总是包含long类型的值,那么你可以使用下面的where子句

WHERE CONVERT(BIGINT, id) BETWEEN 123 AND 123456 

但是,如果你的ID是不是一个数值,它会引发错误

+0

是SOQL支持的Convert函数吗?我尝试在Force.com浏览器中,但似乎无法正常工作。 – RandomQuestion

+0

我不确定SOQL,但你可以参考[这篇文章](http://stackoverflow.com/questions/5915584/soql-type-conversion-salesforce-com) – Nick