sql >> Base de Datos >  >> RDS >> Mysql

¿Es posible tratar guiones y espacios de la misma manera en SQL?

Como alguien ha sugerido, puede adaptar y utilizar la búsqueda de texto completo.

Si elige tomar esta ruta, deberá habilitar la búsqueda de texto completo en los campos requeridos.

Asumiré que verificará post_title y post_body (?), que necesita que ejecute esto;

ALTER TABLE `posts` ADD FULLTEXT KEY `post_search` (`post_title`,`post_body`);

Cuando haya terminado, su consulta de búsqueda se puede editar fácilmente para convertirse en;

$sql = "SELECT * FROM `posts` WHERE MATCH(post_title,post_body) AGAINST '$search'";

Si desea una mejor coincidencia, también es posible darle una puntuación y ordenarla, lo que requeriría un código similar a este:

$sql = "SELECT *, MATCH(post_title, post_body) AGAINST ('{$search}') AS score ".
       "FROM `posts` WHERE MATCH(post_title, post_body) AGAINST ('{$search}') ORDER BY `score` DESC";

--- NOTAS

Para la búsqueda, debe determinar cómo buscará.

En la última instancia, usé algo similar, simplemente tenía un formulario para el término de búsqueda (llamado "Buscar"), lo que resultó en el envío de $_POST['búsqueda'] al servidor.

Luego usé;

$search = (array_key_exists('search', $_POST) && is_string($_POST['search'])) ? mysql_real_escape_string($_POST['search'], $c) : FALSE ;
if ($search) {
    // Do the fulltext query requires (See above)
}

Dado que la búsqueda de texto completo ignorará el guión, solo le quedan espacios, lo que funciona muy bien para el texto completo, si opta por utilizar resultados puntuados.