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
Conte OP @wanjingjjj
@zhujinliang @wanjingjjj @justfindu 写后面肯定是可以的~ 我的意思是想要模糊匹配的关系是:传递进来的数据(漳浦盘陀、漳浦盘陀邮政支局等)包含数据库中相应字段的信息(postName,postName1,postName2等),可以理解为模糊匹配的一个反转? 只是试了一下这么奇葩的写法。 实际绕过了,把数据查出来然后再模糊匹配。 |
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里处理数据。快多了 |