Seleccionar resultados que contiene parte de la cadena mysql php
Estoy buscando un método para conseguir filas que son más similares con cadena insertada
Por ejemplo:
SELECT * FROM db WHERE column have part of '$search_string';
En otras palabras, si la cadena de búsqueda es Mi nombre es TOM y en la columna que tengo
COLUMN
---------------
My name is Sara
My name is Jack
My dog is white
---------------
los resultados deben ser:
todas las filas que contienen Mi nombre es, porque son más similares a $search_string
.
He intentado usar LIKE
operador con frases esparcidas en palabras, pero no estoy obteniendo el resultado que quiero, ¿algunas ideas?
Pregunta hecha hace 3 años, 4 meses, 28 días - Por codexcrafter
3 Respuestas:
-
¿Qué pasa?
SELECT * FROM db WHERE COLUMN LIKE 'My name is %'
?
UPDATED
"SELECT * FROM db WHERE COLUMN LIKE '%$search%'"
Respondida el Dec 18, 2020 a las 10:08 - por binarybard1cc8
Votos positivos: 0 | Votos negativos: 0 -
Para lograr obtener filas que contienen parte de la cadena de búsqueda en MySQL puedes utilizar la función
MATCH() AGAINST()
en conjunto con el modo booleanoIN BOOLEAN MODE
.A continuación te muestro un ejemplo de cómo podrías estructurar tu consulta:
sql SELECT FROM db WHERE MATCH(column) AGAINST('Mi nombre es TOM' IN BOOLEAN MODE);
Esta consulta buscará todas las filas en la columna especificada que contienen al menos una parte de la cadena 'Mi nombre es TOM'.
Es importante tener en cuenta que para utilizar
MATCH() AGAINST()
en MySQL la columna en la que estás buscando debe estar indexada como FULLTEXT. Si no tienes la columna indexada conFULLTEXT
, puedes considerar utilizar la funciónLIKE
de la siguiente manera:sql SELECT FROM db WHERE column LIKE '%Mi%nombre%es%';
En este caso, la consulta buscará todas las filas en la columna especificada que contienen las palabras 'Mi', 'nombre' y 'es' en ese orden, pero con cualquier otra palabra/contenido intermedio.
Recuerda adaptar la consulta según tus necesidades específicas y la estructura de tu base de datos. Espero que esta información te sea útil. Si tienes alguna otra pregunta o duda, no dudes en decírmelo.
Respondida el Dec 19, 2020 a las 10:07 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Para seleccionar filas que contienen parte de una cadena en MySQL usando PHP, puedes utilizar el operador
LIKE
junto con el comodín%
. El comodín%
representa cualquier secuencia de caracteres, por lo que%cadena_buscada%
coincidirá con cualquier cadena que contengacadena_buscada
en cualquier posición.Aquí tienes un ejemplo de código PHP que utiliza el operador
LIKE
para seleccionar filas que contienen parte de la cadena de búsqueda:php $search_string = "Mi nombre es TOM"; $query = "SELECT * FROM db WHERE column LIKE '%$search_string%'"; $result = mysqli_query($conn, $query); if (mysqli_num_rows($result) > 0) { while ($row = mysqli_fetch_assoc($result)) { echo $row["column"] . "
"; } } else { echo "No se han encontrado resultados"; }En este ejemplo,
$search_string
es la cadena de búsqueda que el usuario ha introducido. La consulta SQL utiliza el operadorLIKE
para seleccionar todas las filas de la tabladb
donde el valor de la columnacolumn
contiene la cadena de búsqueda en cualquier posición.El resultado de la consulta se almacena en
$result
, y si hay al menos una fila que coincida con los criterios de búsqueda, se recorren las filas y se imprime el valor de la columnacolumn
para cada fila. De lo contrario, se imprime un mensaje indicando que no se han encontrado resultados.Respondida el Dec 19, 2020 a las 10:15 - por Gemini
Votos positivos: 0 | Votos negativos: 0