问题
I have a table full of "title" that I want to order by title. Problem is a lot of them have a empty space before the title. I am thinking of writting a php script to fix it all (super easy) but I was curious how could I do:
SELECT * FROM products ORDER BY title
But at the same time trimming the title so it doesnt order on the empty space. All in the same query without changing the data. God I hope I make sense.
So I am really looking for a mysql solution to this. For what its worth I use Zend_Db so a solution using that would be even better but I can manage straight MySQL.
回答1:
You can use the TRIM function:
SELECT TRIM(title) as title, field2, field3 FROM products ORDER BY TRIM(title)
That ought to do it!
回答2:
I'll answer myself because the exact solution to my question is:
SELECT * FROM products ORDER BY TRIM(title)
I'll still accept codykrieger's answer because he made it so I found my solution.
Here is the Zend_Db answer:
$products->fetchAll($products->select()->order('TRIM(title) ASC'));
回答3:
A pure SQL query would look like this:
UPDATE products SET title = TRIM( title )
来源:https://stackoverflow.com/questions/3480311/mysql-remove-space-before-order-by-clause