PHP MySql Nerede Alanı = <4 Words

3 Cevap php

Böylece bazı işaretçiler verebilir Ben bu mümkün, az sonra 4 kelime olduğunda bir alandan veri çekecek bir sorgu kullanmanız gerekir ve? Sanırım bu 3 kelime oldu ve sonra bir tane bulduğunda ise deyimi sonlandırmak birini bulana kadar bu sonuçlar üzerinden döngü olabilir mümkün değilse.

3 Cevap

SELECT column FROM table where LENGTH(column) - LENGTH(REPLACE(column, ' ', ''))+1 < 4

Credits and full explanation

İşte Regexp Solution.

select * from TABLE where column not regexp '^.+( .+){4}$'

Başına kayıt bazında seçme işlevleri çağıran performans açısından hemen hemen her zaman kötü bir fikirdir - disk alanı (tırnak içinde ben dolar maliyeti bahsetmiyorum beri ekleyiniz) CPU kapasitesi genellikle çok daha 'ucuz' dir.

Çoğu veritabanı benim DBA akıl hocası bir zamanlar bana söylediği gibi "daha fazla yazmak daha okumak" olma eğilimindedir; Bu durumda ideal bir çözüm takmadan veya bu sütundaki kelime sayısını hesaplamak ve başka bir sütunda bunları depolamak için satır güncellerken bir tetikleyici sahip olmaktır. Bu ideal nedeni kelimelerin sayısı sadece alanını güncelleştirmek zaman değişir, bu nedenle kayıt okumak her zaman (gereksiz yere) bu noktada zaman yoğun hesaplama yapmak yerine daha iyi olmasıdır.

Eğer uzun (dize) bir (kısa) tamsayı ekliyoruz beri katma gerekli boşluk az olacak ama (o da sen endeksi emin olun) sorguları sadece tamsayı alanını kullanarak boyunca çığlık bulacaksınız.

Ben bir LIKE '% % % %' önermek için gidiyordu ama ben değil işe ya da eğer tamamen emin değilim.