On Fri, 26 Jan 2007, Kohler, Andy wrote:
Ken Irwin asked:
I wonder if it's possible to use LIKE with
the results of a subquery, eg.:
SELECT * FROM table WHERE ip [NOT LIKE ANYTHING IN] (SELECT
ip_range FROM known_ips) where [NOT LIKE ANYTHING IN] is
probably some different wording.
In general, you'd do this like (hah):
SELECT *
FROM table t
WHERE NOT EXISTS
( SELECT *
FROM known_ips
WHERE ip = t.ip
)
I think what's Ken is asking for though is there some combination of the
IN operator and LIKE operator. He's trying to exclude a set of patterns,
ie converting (ip NOT LIKE "127.%" OR ip NOT LIKE "143.123.%").
Off the top of my head I can't think of anything like that (which isn't to
say much), but if by some stroke of luck you filter based on a certain
part of the address you could do a substring function. (You'd have to
check MySQL manual for the exact syntax)... Ie
SELECT *
FROM iptables
WHERE substring(iptables,1,7) NOT IN (127.475,...)
Jon Gorman