2012-04-16 7 views
5

Dies sollte ein einfacher sein, aber ich habe einen Moment. Warum sortiert ORDER BY mit LIKE die übereinstimmenden Ergebnisse als höher als die nicht übereinstimmenden? Um die Ergebnisse zu bekommen, ich erwarte ich habe ASC und DESC zu mischen, was ansonsten die gleichen Daten:Sortieren nach: Rückgabe unLIKE vor wie WIE?

create table foo (name text); 
select name from foo order by name like 'm%' desc, name; 

Antwort

8

"x" wie 'm%' ist FALSCH; "Autokolonne" wie "m%" ist WAHR; "FALSCH" < "WAHR".

+0

_M_ agnificant, danke. – Sam

0

Sie union dafür verwenden können ...

select name from foo where name like 'm%' 
order by name desc 
union all 
select name from foo where name not like 'm%' 
order by name asc 

es Ergebnis geben wird per Ihre Anforderung .. :)


hinzugefügt asc in der zweiten union select Abfrage ... nur für verständlichere Erklärung ... ohne diese (ASC) auch Abfrage gewünschten Ergebnis .. geben soll