Basierend auf der richtigen Antwort, aber auch unter Berücksichtigung der ASCII-Steuerzeichen, hat sich für mich folgende Lösung bewährt:
SELECT * FROM `table` WHERE NOT `field` REGEXP "[\\x00-\\xFF]|^$";
Es funktioniert genauso: Es wird in einer Spalte nach Verstößen gegen den ASCII-Bereich gesucht, aber Sie können auch nach Steuerzeichen suchen, da für Codepunkte die hexadezimale Notation verwendet wird. Da es keinen Vergleich oder keine Konvertierung gibt (im Gegensatz zu @ Ollie's Antwort), sollte dies auch deutlich schneller sein. (Vor allem, wenn MySQL die Regex-Abfrage vorzeitig beendet, was auf jeden Fall der Fall sein sollte.)
Außerdem wird vermieden, dass Felder mit der Länge Null zurückgegeben werden. Wenn Sie eine etwas längere Version wünschen, die möglicherweise eine bessere Leistung erzielt, können Sie stattdessen Folgendes verwenden:
SELECT * FROM `table` WHERE `field` <> "" AND NOT `field` REGEXP "[\\x00-\\xFF]";
Es wird eine separate Längenprüfung durchgeführt, um Ergebnisse mit einer Länge von Null zu vermeiden, ohne sie für einen Regex-Durchlauf zu berücksichtigen. Abhängig von der Anzahl der Einträge mit der Länge Null kann dies erheblich schneller sein.
Beachten Sie, dass wenn Ihr Standardzeichensatz etwas Seltsames ist, bei dem 0x00-0xFF nicht denselben Werten wie ASCII zugeordnet ist (gibt es irgendwo einen solchen Zeichensatz?), Dies ein falsches Positiv zurückgeben würde. Ansonsten viel Spaß!