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 booleano IN 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 con FULLTEXT, puedes considerar utilizar la función LIKE 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 contenga cadena_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 operador LIKE para seleccionar todas las filas de la tabla db donde el valor de la columna column 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 columna column 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