V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
ConteMan
V2EX  ›  编程

这种奇葩的写法果然是不行吗

  •  
  •   ConteMan · Apr 9, 2015 · 4139 views
    This topic created in 4041 days ago, the information mentioned may be changed or developed.

    SELECT id FROM xxxxx where carrierId = 2 AND (('%'+postName+'%') LIKE '漳浦盘陀' OR ('%'+postName1+'%') LIKE ' [漳浦盘陀邮政支局] 已收寄' OR ('%'+postName2+'%') LIKE ' [漳浦盘陀邮政支局] 已收寄') AND is_delete = 0

    6 replies    2015-05-08 21:57:03 +08:00
    wanjingjjj
        1
    wanjingjjj  
       Apr 9, 2015
    这写法真是太奇葩了,为什么这么写
    zhujinliang
        2
    zhujinliang  
       Apr 9, 2015
    把LIKE左右两边对调一下试试呢

    SELECT id FROM xxxxx where carrierId = 2 AND ('漳浦盘陀' LIKE ('%'+postName+'%') OR ' [漳浦盘陀邮政支局] 已收寄' LIKE ('%'+postName1+'%') OR ' [漳浦盘陀邮政支局] 已收寄' LIKE ('%'+postName2+'%')) AND is_delete = 0

    再不行试试INSTR之类的函数
    wanjingjjj
        3
    wanjingjjj  
       Apr 9, 2015
    应该这么写吧 postName like '%漳浦盘陀%'
    justfindu
        4
    justfindu  
       Apr 9, 2015
    是因为%加错地方了吧
    ConteMan
        5
    ConteMan  
    OP
       Apr 10, 2015
    @wanjingjjj
    @zhujinliang
    @wanjingjjj
    @justfindu

    写后面肯定是可以的~
    我的意思是想要模糊匹配的关系是:传递进来的数据(漳浦盘陀、漳浦盘陀邮政支局等)包含数据库中相应字段的信息(postName,postName1,postName2等),可以理解为模糊匹配的一个反转?
    只是试了一下这么奇葩的写法。
    实际绕过了,把数据查出来然后再模糊匹配。
    solaro
        6
    solaro  
       May 8, 2015   ❤️ 1
    三个like。。醉了。碰到这种情况,我会把他拆分成
    SELECT id
    FROM xxxxx
    WHERE carrierId = 2
    AND is_delete = 0
    AND (('%'+postName+'%')
    LIKE '漳浦盘陀'

    SELECT id
    FROM xxxxx
    WHERE carrierId = 2
    AND is_delete = 0
    AND ('%'+postName1+'%') LIKE ' [漳浦盘陀邮政支局] 已收寄'

    SELECT id
    FROM xxxxx
    WHERE carrierId = 2
    AND is_delete = 0
    AND ('%'+postName2+'%') LIKE ' [漳浦盘陀邮政支局] 已收寄')

    三个QUERY,在php里处理数据。快多了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2369 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 05:58 · PVG 13:58 · LAX 22:58 · JFK 01:58
    ♥ Do have faith in what you're doing.