2010-08-13 50 views
2

我有一張桌子滿是「標題」,我想按標題排序。問題是他們中的很多人在標題之前有空的空間。我想書面方式PHP腳本來解決這一切(超級簡單),但我很好奇,我怎麼可以這樣做:MySQL根據子句排序前刪除空格

SELECT * FROM products ORDER BY title 

但在同一時間修剪標題所以它不上的空白訂單。全部在相同的查詢中不改變數據。上帝,我希望我有道理。

所以我真的很想找一個mysql解決方案。對於我使用Zend_Db的價值,所以使用它的解決方案會更好,但我可以管理直接的MySQL。

回答

9

可以使用TRIM功能:

SELECT TRIM(title) as title, field2, field3 FROM products ORDER BY TRIM(title) 

這應該去做吧!

+1

嘿謝謝。給你一點和正確的答案。 – Iznogood 2010-08-13 20:25:59

+0

謝謝!我很感激。 – codykrieger 2010-08-13 21:01:34

2

一個純粹的SQL查詢應該是這樣的:

UPDATE產品設置標題= TRIM(標題)

+0

謝謝,但我最好說我不改變數據只是修剪了order by子句。 – Iznogood 2010-08-13 20:19:02

+0

如果這是你的用例,那很好。然而,這肯定不是理想的,因爲你需要在表格上對每一個查詢執行附加操作,以便按照正確的順序得到結果。如果你的桌子變大,你會看到明顯的性能下降。 – 2010-08-13 23:33:32

3

我來回答自己,因爲我的問題的具體解決方法是:

SELECT * FROM products ORDER BY TRIM(title) 

我還是會接受codykrieger的答案,因爲他做了,所以我發現我的解決方案。

這裏是Zend_Db的答案:

$products->fetchAll($products->select()->order('TRIM(title) ASC'));