(通用版)salesforce中soql及sosl的伪‘Like’模糊检索
salesforce里有soql、sosl两种查询语法,soql针对模糊搜索也有‘like’关键字,然而只能针对其自带字段如:Name、Id;对于自定义添加的字段如:Message__c、Note__c采用‘like’模糊检索则会报错。
然而,一般情况业务需求上更多的会对自定义字段有模糊检索的需求,因此对此作了一些调查,然而国内salesforce并不流行,论坛博客相关讨论也很少,参考了部分JP博客、官方的相关文档,总结出两种思路来应对自定义字段模糊检索问题。
一、通过sosl(salesforce object search language)的find关键字实现
FIND ‘sear*’ IN ALL FIELDS RETURNING Table__c
思路:通过find的search语句执行得到一个模糊检索的结果集,然后将结果集中的id取出放入集合内,再在主soql文中加入‘id in (模糊搜索记录的id集合)’的where条件从而达到模糊查询的目的。
if (note != null && note != '') {String findQuery = 'FIND \'' + note + '*\' IN ALL FIELDS RETURNING Test__c';List<List<sobject>> results = search.query(findQuery);Set<Id> ids = new Set<Id>();for(List<sobject> result: results){for(sobject obj : result){ids.add(obj.Id);}}string strIds = '';Integer i = 0;for (String str : ids) {if(i != ids.size()-1){strIds += '\''+str+'\'';strIds += ',';}else{strIds += '\''+str+'\'';}i++;}if(strIds != null && strIds != ''){soql += ' And id IN ('+strIds+')';}else{soql += ' And id = '+'\'\'';}}
通过文档说明和测试发现:
- Sosl的模糊检索‘find’只能完成单词、词组以及‘hap%’这种检索,对‘%hap%’这种无能为力;
- 示例代码是全字段检索(IN ALL FIELDS),按API的用法换成特定列字段检索(IN Note__c FIELDS)会报错,弄得人有点烦躁;
因此,综合考虑,还是第二种方案更为可靠。
二、通过对检索所得结果集的特定字段通过函数进行过滤实现
obj.col.contain(keyword)
思路:将soql执行得到的List集合遍历,对各个obj的Note__c字段进行关键字模糊搜索过滤(contain()函数),满足条件的添加到结果List中,最后返回结果List。
List<Test__c> temp = database.query(soql);List<Test__c> resultList = new List<Test__c>();if(strMemo!=null&&strMemo!=''){for(Test__c dr:temp){if(dr.Note__c!=null&&dr.Note__c!=''){if(dr.Msg__c.contains(strMemo)){resultList.add(dr);}}}}else{resultList = temp;}return resultList;
最后说下自己的看法,这种两种方法初看起来都有点效率低下,毕竟比起sql文中like来确实费劲不少,但就实际的页面效果来看并没有多大时间损耗,数据量万条以内可行性还是挺高的。
转载于:https://www.cnblogs.com/codingHeart/p/6645607.html
(通用版)salesforce中soql及sosl的伪‘Like’模糊检索相关推荐
- 通用版程序在the new iPad与Xcode4.3中的不兼容。
开发的一款通用版程序由于the new ipad的出现,运行出现了不兼容现像. 原有程序启动图片default.png, default@2x.png, default~ipad.png,出现启动画面 ...
- 行业垂直型SaaS进击蓝海 中国版Salesforce潜藏何处
文|熔财经 作者|一城 到底谁才能成为中国版Salesforce?发展多年后,这个追问在SaaS行业一直没有停歇. 但是,先不论SaaS最狂热的时期已经过去,大量创业创新企业折戟沉沙,有不少转型云服务 ...
- 中国版Salesforce「难产」
作为1999年就开始上云.最先推出PaaS平台的企业,Salesforce不仅为资本市场创造了大量云计算专用名词,更踩对了每一个节点,收获了企业服务市场海量的红利,顺利得让人嫉妒. 至今为止,国内市场 ...
- Salesforce中jquery ui中的autoComplete实现自动联想
项目中,我们有时候会需要实现自动联想功能,比如我们想输入用户或者联系人名称,去联想出系统中有的相关的用户和联系人,当点击以后获取相关的邮箱或者其他信息等等.这种情况下可以使用jquery ui中的au ...
- 大掌柜商业管理系统服务器地址,大掌柜软件通用版操作说明.doc
大掌柜软件通用版操作说明 PAGE PAGE 157 系统应用基础 内容提要: 大掌柜软件专业版对系统的要求 数据库SQL server2000的安装 大掌柜软件专业版服务器端与客户端的安装 加密狗的 ...
- 移动云正式发布基于龙蜥 Anolis OS 的 BC-Linux V8.2 通用版操作系统
简介: 2020年12月CentOS项目组宣布CentOS 8将于2021年12月31日结束支持,这意味着从2022年开始,使用CentOS 8的用户,将无法得到来自官方的新硬件支持.bug修复和安全 ...
- 学生php实训个人总结300字,实训总结300字通用版5篇
[导语]实训目的要明确,在理论上验证定理,公式,算法,并使实验者获得深刻和系统的理解,在实践上,掌握使用实验设备的技能技巧和程序的调试方法.一般需说明是验证型实验还是设计型实验,是创新型实验还是综合型 ...
- 七牛非Cocoapods 手动集成霹雳直播SDK(通用版)
引言 一直想写一个通用版的教程,霹雳直播SDK更新太快,每一版的更新,都要重新更新一下之前写的单独的教程.我是个懒人,想要一下解决所有的问题,授人以鱼不如授人以渔,这个博客重点会讲需要用非Cocoap ...
- java 浏览器 qq_qq浏览器通用版 手机QQ浏览器v2.1Java通用版下载
qq浏览器通用版 手机QQ浏览器v2.1Java通用版下载 手机QQ浏览器v2.1通用版 软件类型: 手机浏览器 适用手机: java 软件大小: 591 KB 更新日期: 2011-06-12 浏览 ...
- springboot easyexcel不创建对象导入excel 通用版
文章目录 背景知识介绍 有数据对象读方式 创建类实现ReadListener 无额外实现类,since: 3.0.0-beta1 不创建数据对象读方式 实践 思路 抽象监听类 抽象业务处理类 具体业务 ...
最新文章
- 为什么我能从普通程序员干到大厂总监?
- linux ioctl 设备操作函数 r3到r0 应用层 驱动层 通讯
- 系统调用与软件中断SWI的实现
- Python 神工具包!翻译、文字识别、语音转文字统统搞定
- JEP 277“增强弃用”非常好。 但这是一个更好的选择
- 【BZOJ3677】[Apio2014]连珠线 换根DP
- 计算机教室卡通画,电脑绘画对彩色童年的应用
- LeetCode —— 532. 数组中的K-diff数对(Python)
- Unity Shader _Time 的单位
- 移动磁盘故障,如何在Mac修复?
- 华为又又又白给了,自动化福利领取了吗?
- navicat 解析sql_Navicat使用详解
- TL-R406 IP带宽控制功能设置指南
- docker(三)docker仓库
- AminoCapital:大数据+机械学习引领今年硅谷趋势
- 2013最新手机QQ源码源码下载
- SEO优化快速排名技术
- oracle instantclient(即时客户端安装) 中文乱码
- 【拓展】深度解析蚂蚁Ant Design的设计原则
- ZigBee交通事故警示装置