Consulta SQL no devuelve resultado esperado con registros largos

  • Autor Autor Sandoval
  • Fecha de inicio Fecha de inicio
Sandoval

Sandoval

Dseda
Verificación en dos pasos activada
Verificado por Whatsapp
Verificado por Binance
Hola a todos,

Escribo porque de verdad no se que hacer. Tengo una tabla con los datos de empresas entonces por medio de php hago la siguiente consulta sql:

$sql = "SELECT * FROM empresas WHERE nombre LIKE '%".$nombre."%' ORDER BY nombre";
$re= $this->comunicar->consultar($sql);

Tengo un registro donde nombre es igual a "PROMASA" y me devuelve el resultado esperado sin problema, y así con otros registros. Pero resulta que tengo un registro con el siguiente nombre: "EMPRESA MIXTA SOCIALISTA LEGUMINOSA DEL ALBA S.A" y me devuelve el resultado vacío como si no existiera ese registro.

Lo extraño que hubo una ocasión en que funcionó bien, y extrañado vuelvo a probar y ya estaba inservible de nuevo.

Entonces ejecuté código directamente en la consola de la siguiente manera:

SELECT * FROM empresas WHERE nombre LIKE '%EMPRESA MIXTA SOCIALISTA LEGUMINOSA DEL ALBA S.A%' ORDER BY nombre

Y me devolvió valores vacío. Ahorita estoy probando de nuevo y si me devuelve el registro, sin embargo el problema persiste cuando lo hago por php.

Quisiera saber si el LIKE %% tiene algún límite en cuanto los caracteres (ya que cuando corto la frases por ejemplo:EMPRESA MIXTA SOCIALISTA LEGUMINOSA, si me lo toma ) o si estoy haciendo algo más.

También me gustaría que probaran la sentencia a ver como les va...

Acabo de agregar otro registro igual pero cambiando la última letra y si me lo toma: EMPRESA MIXTA SOCIALISTA LEGUMINOSA DEL ALBA S.E

¡Gracias de antemano!
 
Última edición:
Hola saludos ,

Primero te explico para que sirve ese LIKE sirve mas que todo para encontrar todos los valores donde se encuentre alguna coincidencia no determinante ,
que quiere decir esto te va a traer todos los valores contenidos o que incluyan dicho valor en la variable en tu caso $nombre.

Que sucede que al agregarle LIKE '%".$nombre."%' con los símbolos % , quiere decir que va a buscar ese valor en el campo nombre donde se encuentre dicho contenido tanto para atrás como adelante .

en tu caso decis que tenes un registro que se llama "PROMASA" cuando en realidad estas buscando "EMPRESA MIXTA SOCIALISTA LEGUMINOSA DEL ALBA S.A" , que sucede al usar like y no encontrar un registro que por lo menos en la cadena de texto sea "PROMASA" no te lo va a mostrar porque para la consulta no esta contemplado.

que quiere decir que si tenes un registro llamado "PROMASA" y tu consulta fue por ejemplo de esta manera :

Insertar CODE, HTML o PHP:
SELECT * FROM empresas WHERE nombre LIKE '%EMPRESA MIXTA SOCIALISTA LEGUMINOSA DEL PROMASA S.A%' ORDER BY nombre

Aunque el nombre no sea igual , el registro "PROMASA" tiene o deberia estar en el resultado de la consulta , Por que ? , porque al agregar al LIKE '%EMPRESA MIXTA SOCIALISTA LEGUMINOSA DEL PROMASA S.A%'

Esta contemplado por lo menos un acierto , en ese caso promasa y debia haber resultado nada mas por eso.


Saludos espero haberte ayudado , cualquier cosa , no dudes en preguntarme.
 
Hola, revisa que en la base de datos cuando crearon el registro no lo pegaron y copiaron de word y te quedo un caracter oculto (especial), lo que hace que el texto no este limpio, a nivel del sql o pantalla esos caracteres especiales no se ven.

Saludos.
 
^^^ buen dato.

Recuerdan no pegar de Word o Excel datos en las Base de Datos.
 
pudiera ser un problema con los caracteres o tipo de datos y variables!!!!
 
Atrás
Arriba