Opierając się na poprawnej odpowiedzi, ale biorąc pod uwagę również znaki sterujące ASCII, rozwiązanie, które zadziałało dla mnie to:
SELECT * FROM `table` WHERE NOT `field` REGEXP "[\\x00-\\xFF]|^$";
Robi to samo: wyszukuje naruszenia zakresu ASCII w kolumnie, ale umożliwia również wyszukiwanie znaków sterujących, ponieważ używa notacji szesnastkowej dla punktów kodowych. Ponieważ nie ma porównania ani konwersji (w przeciwieństwie do odpowiedzi @ Ollie), to również powinno być znacznie szybsze. (Zwłaszcza jeśli MySQL wykonuje wczesne zakończenie zapytania regex, co zdecydowanie powinno.)
Unika również zwracania pól o zerowej długości. Jeśli potrzebujesz nieco dłuższej wersji, która może działać lepiej, możesz użyć tego:
SELECT * FROM `table` WHERE `field` <> "" AND NOT `field` REGEXP "[\\x00-\\xFF]";
Wykonuje oddzielne sprawdzenie długości, aby uniknąć wyników o zerowej długości, bez uwzględniania ich jako przebiegu wyrażenia regularnego. W zależności od liczby posiadanych wpisów o zerowej długości może to być znacznie szybsze.
Zauważ, że jeśli twój domyślny zestaw znaków jest czymś dziwnym, gdzie 0x00-0xFF nie jest mapowane na te same wartości co ASCII (czy istnieje taki zestaw znaków gdziekolwiek istnieje?), Zwróci to fałszywie dodatni wynik. W przeciwnym razie baw się dobrze!