PDA

Ver la Versión Completa : Operador LIKE en access


maurogambo
04-07-2004, 00:26:46
Tengo un problema con la siguiente consulta SQL, (utilizo el Motor Jet 4.0 como proveedor, access XP, Delphi 6):

SQL := SELECT * FROM Usuarios WHERE Nombre LIKE 'carlos*';

en DELPHI esa consulta no arroja ningún resultado, es decir, cero registros, aunque tenga varios campos donde aparece ''CARLOS PEREZ, 'CARLOS ALBERTO'... sin embargo, si uno en uno de los campos aparece 'CARLOS*' este si lo refleja en los resultados.

en MS ACCESS la misma consulta devuelve todos los campos donde se tenga CARLOS (como debería ser)

AGRADECERÍA CUALQUIER AYUDA.

Mick
04-07-2004, 01:06:33
Debes usar % como caracter comodin, no *.

Saludos
Miguel.

marcoszorrilla
04-07-2004, 10:26:58
Efectivamente es como te dice Mick. Aquí tienes un ejemplo que acabo de probar y funciona sin problemas.

procedure TForm1.Button1Click(Sender: TObject);
begin
AdoQuery1.Close;
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Add('Select * From video Where masculino like ''K%''');
AdoQuery1.Open;
end;

Un Saludo.

moNTeZIon
06-09-2006, 10:56:31
Hola gente,
Esque luego de volverme loco y encontrar donde estaba la cuestión, vi este mensaje y me dolió tanto que me tuve que registrar y aclarar algo...
De verdad han probado eso? Este símbolo "%" no funciona desde Access utilizado con el operador LIKE. Desde Access deben utilizar "*" como hace nuestro amigo.
Si no pruebenlo.
Aclaro que esto es así con Access 2003, quizá no con otras versiones, pero me atrevería a jurar que si...

1. Crear registro con valor "pepe".
2. Crear consulta probando: SELECT * FROM tabla WHERE campo LIKE '%pepe%'
3. Comprobar resultado (no sale nada!)
4. Crear consulta probando: SELECT * FROM tabla WHERE campo LIKE '*pepe*'
5. Comprobar resultado (sale nuestro registro!)

IMPORTANTE: Cuando digo "desde" Access quiere decir intentando crear una consulta desde dentro del propio Access para hacer la prueba.

Lo que me volvió majara fue, una vez conseguida la sentencia que funcionaba desde Access, me la llevé para el Visual Studio, para mandarla desde una ejecución SQL, pero sorpresa la mía cuando veo que desde mi aplicación no me devuelve ningún registro.
Entonces es cuando me da por probar "una vez más" el símbolo "%" en vez de "*" desde mi aplicación, y si me devuelve los registros, como bien dicen ustedes...

La conclusión a la que he llegado es super ilógica:
- Creando una consulta desde la propia BD el LIKE funciona con "*" y no con "%"
- En cambio mandando la SQL desde la aplicación a la misma BD, hay que mandar el LIKE con el simbolo "%" y no con "*"

Increíble pero cierto.
Si alguien tiene una explicación, genial!

Un saludo gente!

Josemarg
06-09-2006, 11:48:06
Increible pero totalmente cierto, a mi me pasa exactamente lo mismo. He perdido mucho tiempo dandole vueltas a este tema.

marcoszorrilla
06-09-2006, 14:20:42
Es que una cosa es atacar el SQL de Access desde el propio Access con el asistente gráfico para construcción de consultas y otra desde Delphi.

El comodín para Access como ya se ha dicho es el asterisco (*)

Y desde SQL el símbolo de porcentaje (%).

Aunque como se ha explicado más arriba, bastará con hacer un par de pruebas en caso de dudas, tiempo estimado 2 minutos.

Un Saludo.