Was ist der beste Weg, dies zu tun?mysql wo IN-Anweisung mit Regex?
select * from myTable where hostname IN ('host1-%', 'host2-%', 'host3-%')
wo Hostnamen manchmal als Fully Qualified Domain oder einfach wie nur host1
Was ist der beste Weg, dies zu tun?mysql wo IN-Anweisung mit Regex?
select * from myTable where hostname IN ('host1-%', 'host2-%', 'host3-%')
wo Hostnamen manchmal als Fully Qualified Domain oder einfach wie nur host1
dies tun Kommt zurück, was Sie
select * from myTable where hostname REGEXP '^host[123]-'
oder
select * from myTable where hostname REGEXP '^host[1-3]-'
hinzufügen möchten PaulF Antwort, müssen Sie möglicherweise LIKE
in Verbindung mitverwenden, z.B.
SELECT * FROM myTable
WHERE hostname LIKE 'host%' AND hostname REGEXP '^host[1-3]-'
Dies liegt daran, MySQL, wenn REGEXP
Verarbeitung nicht die Verwendung von Indizes machen, aber es wird es für LIKE
verwenden, wenn das Muster ein konstantes Präfix hat. Wenn Sie also einen Index für die hostname
-Spalte haben, wird dieser den Index verwenden, um auf hostXXX
einzugrenzen, und dann nur einen regulären Ausdruck für diese Zeilen durchführen müssen.
WHERE Hostname LIKE 'host1-%' OR Hostname LIKE 'host2-%' OR Hostname LIKE 'host3 -%' ' – RiggsFolly