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

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