apex - 有没有办法防止方括号被插入到我的字符串中?
问题描述
我似乎将一些方括号插入到我用于动态 SOQL 查询的字符串中。我正在尝试检查订单状态是否是用户选择的选项之一。通常我可以在 IN 子句之后抛出一个列表,但因为这是一个字符串,所以我不能这样做。相反,我有一个循环遍历选定状态列表并根据需要添加到查询字符串中。
我在另一个组织中使用了完全相同的语法,没有任何问题,所以我很好奇为什么会在另一个组织中发生这种情况。我已经发布了有问题的版本。希望这不是太难删除。
if(orderStatuses.size() > 0){
query += ' AND ccrz__OrderStatus__c IN (\''+orderStatuses[0]+'\'';
for(Integer i = 1; i < orderStatuses.size(); i++){
query += ', \''+orderStatuses[i]+'\'';
}
query += ')';
}
我想要的是一个看起来像的字符串
'AND ccrz__OrderStatus__c IN ('Completed', 'Order Submitted')'
但相反我得到
'AND ccrz__OrderStatus__c IN ('[Completed', ' Order Submitted]')'
我还尝试使用“replaceAll()”方法在查询运行之前强制删除它们,但它们仍然会出现。
query.replaceAll('[\\[\\]]','');
当只选择一个选项时,它的格式非常好,没有任何括号,但是一旦选择了多个,就会发生这种情况。任何和所有的帮助将不胜感激。正如我上面提到的,当在不同的组织中运行时,相同的代码(授予不同的对象等)给了我正确的结果,所以我很难过。提前致谢!
解决方案
通过将“[”和“]”添加到您的数组“orderStatuses”中,我能够重现您的问题。如果我是你,我会查看那些方括号中的错误。您看到的方括号很可能是您传递的字符串的一部分。orderStatuses[1] 中还有一个额外的空间,它进一步告诉我你有一些东西被添加到代码/SQL 中你不想要的数组中。
var orderStatuses = [];
orderStatuses.push("[Completed");
orderStatuses.push(" Order Submitted]");
var query = ' AND ccrz__OrderStatus__c IN (\'' + orderStatuses[0] + '\'';
for (var i = 1; i < orderStatuses.length; i++) {
query += ', \'' + orderStatuses[i] + '\'';
}
query += ')';
alert(query)
推荐阅读
- javascript - jquery隐藏未使用的选项卡
- doxygen - 如何使用 Doxygen 生成用户手册?
- c# - unity c# 如何 CreatePrimitive 自定义对象?
- r - 在r中集中数据帧信息
- mongodb - 带有查找和管道查询的 MongoDB 聚合很慢
- flutter - 当CustomScrollView在颤动中滚动时如何隐藏appbar
- css - CSS在本地的Safari中工作,但在我将代码上传到cPanel后在Safari中不起作用
- python - 如何访问 Azure 应用服务上的 ODBC 驱动程序
- postgresql - Postgres 中的慢赞查询
- database-migration - 将 Oracle12C 驱动程序与 Oracle 19c 数据库一起使用