我在我的表中有4列。现在,由于这更多的是数据清理任务,所以我对性能并没有特别的关注。但我仍然想知道可能的选择。SQL like clause with many values
看看下面的查询:
SELECT * FROM dsopi_person_addr_rule ADDR WHERE
addr.src_address_line1 LIKE '%DEP%'
OR addr.src_address_line2 LIKE '%DEP%'
OR addr.src_address_line3 LIKE '%DEP%'
OR addr.src_address_line4 LIKE '%DEP%';
类似DEP我有10多场比赛。我需要为所有4条地址线重复每场比赛。有没有更好的方法来做到这一点?我个人讨厌一次又一次地写作。
**更新:下面就是答案
SELECT *
FROM dsopi_person_addr_rule ADDR
WHERE regexp_like (UPPER(addr.src_address_line1), 'DEP|DPT$|ABT|DIP.|DIPART|AFDEL|AVDEL|AVD.|DIV|PGRD|PGP|PPG')
你看全文搜索? [MySQL全文搜索](http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html) – SidewaysGravity
没有办法同时使用'IN'和'LIKE',并且有充分的理由:在你开始“需要”这两个操作符的时候,你已经达到了应该考虑其他选项的地步(比如全文搜索,就像@SidewaysGravity建议的那样)。在查询中有太多的LIKE操作会很慢。 – ean5533
我知道你是对的。我一直在看regexp_like从句。你怎么看待这件事? – Bytekoder