美文网首页
2019-01-28SQL的通配符冲突的处理

2019-01-28SQL的通配符冲突的处理

作者: lyx_lyx | 来源:发表于2019-01-28 14:27 被阅读0次

    表结构描述:当前有一张表,此处假定node_info,存在一个字段node_path是由 ‘字母’、‘数字’ 及 ‘下划线_’组成,如:abc_1_de_f

    需求:查询所有node_path以‘abc_’开头的记录

    这个问题,自然而然的就想到,很简单,直接like % 模糊匹配就OK: 

    SELECT * FROM mode_info WHERE node_path LIKE 'abc_%'  

    运行,发现结果根本就不对,远远超过预期。不仅abc_开头的被查出来,abcd开头等等的也被查询命中。后来想了一下,突然记起'_'是通配符,也就是通常所说的占位符。而通配符大家都知道,会匹配所有单一字符。所以也就意味着,上面的那个sql,会匹配到所有node_path长度大于等于4,且以abc开头的所有记录。

    那么,上面的需求该怎么实现呢。很简单:只要避免‘_’在此处作为通配符存在即可。如何避免呢,那就需要用到另外一个通配符'[]'。修改sql:

    SELECT * FROM mode_info WHERE node_path LIKE 'abc[_]%'  

    至此处,问题已解决。

    相关文章

      网友评论

          本文标题:2019-01-28SQL的通配符冲突的处理

          本文链接:https://www.haomeiwen.com/subject/nueajqtx.html