Doğru cevaba dayanarak, ancak ASCII kontrol karakterlerini de hesaba katarak benim için işe yarayan çözüm şudur:
SELECT * FROM `table` WHERE NOT `field` REGEXP "[\\x00-\\xFF]|^$";
Aynı şeyi yapar: bir sütunda ASCII aralığı ihlallerini arar, ancak kod noktaları için onaltılı gösterim kullandığından kontrol karakterlerini de aramanıza izin verir. Karşılaştırma veya dönüştürme olmadığından (@ Ollie'nin cevabının aksine), bu da önemli ölçüde daha hızlı olmalıdır. (Özellikle MySQL regex sorgusunda erken sonlandırma yapıyorsa, ki kesinlikle yapması gerekir.)
Ayrıca sıfır uzunluklu alanların döndürülmesini de önler. Daha iyi performans gösterebilecek biraz daha uzun bir sürüm istiyorsanız, bunun yerine şunu kullanabilirsiniz:
SELECT * FROM `table` WHERE `field` <> "" AND NOT `field` REGEXP "[\\x00-\\xFF]";
Sıfır uzunluklu sonuçlardan kaçınmak için, bunları normal ifade geçişi için dikkate almadan ayrı bir uzunluk kontrolü yapar. Sahip olduğunuz sıfır uzunluklu girişlerin sayısına bağlı olarak, bu önemli ölçüde daha hızlı olabilir.
0x00-0xFF değerlerinin ASCII ile aynı değerlerle eşleşmediği varsayılan karakter kümeniz tuhaf bir şeyse (herhangi bir yerde böyle bir karakter kümesi var mı?), Bu yanlış bir pozitif döndürecektir. Aksi takdirde, keyfini çıkarın!