2011-02-08 15 views
7

Estoy tratando de ordenar mis consultas mysql basadas en la primera letra, pero cada método que he usado restringe mi búsqueda.Solicitud de consulta sql por primera letra

Ejemplo tabla de MySQL Valor servicios informáticos servicios informáticos abc servicios informáticos dinámicos

Si busco computer services Quiero que los resultados devueltos como:

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

estoy usando mysql texto de búsqueda completa, pero si uso name LIKE 'c%' no hago los otros dos resultados, por ejemplo

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

Esto sólo volvería

  • servicios informáticos

Pero quiero que vuelva:

  • servicios informáticos
  • servicios informáticos
  • abc
  • servicios de computadora dinámica

Soy nuevo en el texto de búsqueda completa de mysql.

+0

No sé mucho sobre la búsqueda de texto completo (es por eso que estoy publicando como un comentario, no una respuesta) pero intentaré deshacerme de 'name LIKE 'c%'' y mira qué pasa. Esta expresión solo coincidirá con las cosas que comienzan con 'c' y son seguidas por cualquier cosa. 'abc computer services' no comienza con' c', así que creo que es por eso que no se selecciona. – FrustratedWithFormsDesigner

+0

Gracias a todos los que publicaron. Increíble respuesta en minutos! –

Respuesta

2

Utilice primero una cláusula order by que coincida con el caso 'starts with'. Estoy usando not like aquí porque el booleano devuelve 0 o 1 y queremos invertir eso para que coincida con los inicios con el mayúsculo primero.

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

Perfecto gracias –

Cuestiones relacionadas