SQL基础:《SQL HACKS》第3章——文本处理,总共列举了4个tips,不用Like搜索关键词、跨列搜索关键字等,下述为我对这4个tips的评析。
1、不用Like搜索关键词
情景描述:字符串模糊查找通常都会使用like。
解决方案:使用数据库支持的全文检索功能。
评析:一般应用我们使用like进行字符串模糊匹配完全可以满足功能、性能需求,但是需要注意like使用方式(通配符在前的like条件是不会使用索引的);对于特殊的应用,如知识库等则应使用数据库全文检索功能,如postgresql的tsvector类型。
2、跨列搜索字符串
情景描述:求解给定字符串S是否与数据库现有的某几列(c1,c2,..cn)匹配老;
解决方案:可以使用or进行连接,判断S是否与给出的每列匹配;也可以使用将c1,c2,cn连接起来判断是否包含S;也可以使用in查询;
评析:跨列搜索字符串除了or连接还有其它很多种实现方式。
3、求解重组字
情景描述:假设现有一张字典表,里面存储了所有单词,如tea,eat,我们发现tea和eat都是有e, a, t组合合成,则表示eat和tea是重组字。现在要求解字典表中eat的重组字有几个?
解决方案:通过数学手段(散列函数、二次散列方函数等)使得输入tea、eat可以得到同一个值value,则只要字典表自连以value作为where条件即可。
评析:数学好真的很关键,只有很强的数学功底才能确保tea、eat的函数值value是一致,其它的单词如sea则是其它的函数值。
4、排序电子邮件
情景描述:对电子邮件账户作升序排序;
解决方案:通过字符串函数截取@之前的字串,并对截取后的字串进行升序排序即可。
评析:熟练掌握数据库的字符串函数可以大大提高工作效率,如常用的字符串连接、取长度,截取字符串,字符串查找,字符串替换等。
本章总评:
本章的几个tip是无非是告诉我们熟练使用数据库的字符串函数会有意外的收获,因此我们至少要熟知一种数据库的字符串操作。