2009-01-19 26 views
2

我需要使用一個查詢,當它少於4個字時,將從字段中提取數據,這是否可能,如果可以,您是否可以提供一些指針?我想如果不可能的話,它可以在結果中循環,直到找到3個字的結果,然後在找到一個結束語時結束while語句。PHP MySql其中字段= <4個字

回答

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

Credits and full explanation

這裏Regexp Solution

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

這應該工作。然而,你應該寫出你正在檢查原始長度與所有空間替換的長度。提問的人可能不太明顯。 – Kris 2009-01-19 13:15:48

+0

我認爲這將失敗,如果該字段有前導空格或尾隨空格 – DanSingerman 2009-01-19 13:18:23

1

調用在每記錄的基礎在選擇功能幾乎總是在性能方面是一個壞主意 - 磁盤空間通常比CPU容量多少「便宜」(我括在引號,因爲我不是在談論美元成本)。

大多數數據庫都傾向於「比讀寫更多」,正如我的DBA導師曾告訴過我的;在這種情況下,理想的解決方案是在插入或更新行時計算該列中的單詞數並將它們存儲在另一列中時觸發。理想的原因是字數只會在更新字段時發生變化,所以最好在該點執行時間密集型計算,而不是每次讀取記錄時(不必要地)。

由於您將一個(短)整數添加到一個long(字符串)中,因此添加的所需空間會很小,但是您會發現查詢只是使用整數字段(請確保您已對其進行索引) 。

0

我打算建議一個LIKE '% % % %',但我不完全確定這是否可行。