V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Conte
V2EX  ›  编程

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

  •  
  •   Conte · 2015-04-09 09:30:03 +08:00 · 3467 次点击
    这是一个创建于 3510 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    6 条回复    2015-05-08 21:57:03 +08:00
    wanjingjjj
        1
    wanjingjjj  
       2015-04-09 11:02:35 +08:00
    这写法真是太奇葩了,为什么这么写
    zhujinliang
        2
    zhujinliang  
       2015-04-09 11:34:01 +08:00
    把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  
       2015-04-09 13:18:27 +08:00
    应该这么写吧 postName like '%漳浦盘陀%'
    justfindu
        4
    justfindu  
       2015-04-09 13:25:39 +08:00
    是因为%加错地方了吧
    Conte
        5
    Conte  
    OP
       2015-04-10 12:08:20 +08:00
    @wanjingjjj
    @zhujinliang
    @wanjingjjj
    @justfindu

    写后面肯定是可以的~
    我的意思是想要模糊匹配的关系是:传递进来的数据(漳浦盘陀、漳浦盘陀邮政支局等)包含数据库中相应字段的信息(postName,postName1,postName2等),可以理解为模糊匹配的一个反转?
    只是试了一下这么奇葩的写法。
    实际绕过了,把数据查出来然后再模糊匹配。
    solaro
        6
    solaro  
       2015-05-08 21:57:03 +08:00   ❤️ 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里处理数据。快多了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   886 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 22:21 · PVG 06:21 · LAX 14:21 · JFK 17:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.