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