2011-02-08 21 views
7

Sto cercando di ordinare le mie query mysql in base alla prima lettera, ma ogni metodo che ho usato limita la mia ricerca.Ordinamento query sql con prima lettera

Esempio tabella MySQL Valore servizi informatici servizi informatici abc servizi informatici dinamici

Se cerco computer services voglio i risultati restituiti come:

**Name** 
computer services 
abc computer services 
dynamic computer services 

sto usando mysql fullsearch text ma se uso name LIKE 'c%' non ho altri due risultati per es.

SELECT name FROM table WHERE match('name') against('computer services*' IN BOOLEAN MODE) AND name LIKE 'c%'; 

Questo sarebbe tornato solo

  • servizi informatici

Ma voglio per tornare:

  • servizi informatici
  • abc servizi informatici
  • servizi informatici dinamici

Sono nuovo al testo di ricerca completo di mysql.

+0

Non so molto sulla ricerca di testo completo (motivo per cui sto postando come commento, non una risposta) ma indovinerò cercare di sbarazzarmi di 'nome LIKE 'c%'' e guarda cosa succede. Questa espressione corrisponderà solo alle cose che iniziano con 'c' e che sono seguite da qualsiasi cosa. 'abc computer services' non inizia con' c' quindi penso che sia il motivo per cui non viene selezionato. – FrustratedWithFormsDesigner

+0

Grazie a tutti coloro che hanno pubblicato. Responso incredibile in pochi minuti !!! –

risposta

2

Utilizzare una clausola order by che corrisponde innanzitutto al caso 'starts with'. Sto usando not like qui perché il valore booleano restituisce 0 o 1 e vogliamo invertirlo per far coincidere l'inizio con il caso per primo.

SELECT name 
FROM table 
WHERE match('name') against('computer services*' IN BOOLEAN MODE) 
ORDER BY name NOT LIKE 'computer services%', name; 
+0

Perfetto grazie –