SELECT id FROM xxxxx where carrierId = 2 AND (('%'+postName+'%') LIKE '漳浦盘陀' OR ('%'+postName1+'%') LIKE ' [漳浦盘陀邮政支局] 已收寄' OR ('%'+postName2+'%') LIKE ' [漳浦盘陀邮政支局] 已收寄') AND is_delete = 0
|  |      1wanjingjjj      2015-04-09 11:02:35 +08:00 这写法真是太奇葩了,为什么这么写 | 
|  |      2zhujinliang      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之类的函数 | 
|  |      3wanjingjjj      2015-04-09 13:18:27 +08:00 应该这么写吧 postName like '%漳浦盘陀%' | 
|  |      4justfindu      2015-04-09 13:25:39 +08:00 是因为%加错地方了吧 | 
|  |      5ConteMan OP @wanjingjjj  @zhujinliang @wanjingjjj @justfindu 写后面肯定是可以的~ 我的意思是想要模糊匹配的关系是:传递进来的数据(漳浦盘陀、漳浦盘陀邮政支局等)包含数据库中相应字段的信息(postName,postName1,postName2等),可以理解为模糊匹配的一个反转? 只是试了一下这么奇葩的写法。 实际绕过了,把数据查出来然后再模糊匹配。 | 
|  |      6solaro      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里处理数据。快多了 |