Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-02-2007
Avatar de rretamar
[rretamar] rretamar is offline
Miembro Premium
 
Registrado: ago 2006
Ubicación: San Francisco, Córdoba, Argentina
Posts: 1.168
Poder: 20
rretamar Va camino a la famarretamar Va camino a la fama
Unhappy Firebird: Problema con LIKE

Hola.
Estoy usando Firebird 1.5 con una tabla, ejecutando una sentencia LIKE de la siguiente forma:

Select * From Tabla
Where Campo Like '%6000'

Campo es un campo de tipo cadena (string), y en distintos registros están los valores 426000, entre otros. En este caso, la consulta me devuelve cero registros, mientras que si uso (por ejemplo) LIKE '426%' sí me funciona.

La pregunta es entonces: ¿ El caracter "comodín" (wilcard) % no funciona al inicio ?.

Saludetes...
Responder Con Cita
  #2  
Antiguo 26-02-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
todos los que acaban en 46
Código SQL [-]
SELECT * FROM CODIGOS_POSTALES
WHERE CODIGO like '%46'
ORDER BY CODIGO
Todos los que comienzan por 46
Código SQL [-]
SELECT * FROM CODIGOS_POSTALES
WHERE CODIGO like '46%'
ORDER BY CODIGO
Todos los que contienen 46 --- También valido like '%46%'
Código SQL [-]
SELECT * FROM CODIGOS_POSTALES
WHERE CODIGO CONTAINING '46'
ORDER BY CODIGO
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO

Última edición por ArdiIIa fecha: 26-02-2007 a las 19:04:03.
Responder Con Cita
  #3  
Antiguo 26-02-2007
Avatar de rretamar
[rretamar] rretamar is offline
Miembro Premium
 
Registrado: ago 2006
Ubicación: San Francisco, Córdoba, Argentina
Posts: 1.168
Poder: 20
rretamar Va camino a la famarretamar Va camino a la fama
Red face

A primera vista debería ser así, pero de las opciones que pones, la primera es la que me devuelve como resultado cero registros.

A la consulta la tipeo directamente desde el editor de SQL de IbExpert.

Saludetes....

Última edición por rretamar fecha: 26-02-2007 a las 20:07:44.
Responder Con Cita
  #4  
Antiguo 26-02-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
Pues a primera vista, parece que no tienes registros que cumplan esa condición ??
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita
  #5  
Antiguo 26-02-2007
Avatar de rretamar
[rretamar] rretamar is offline
Miembro Premium
 
Registrado: ago 2006
Ubicación: San Francisco, Córdoba, Argentina
Posts: 1.168
Poder: 20
rretamar Va camino a la famarretamar Va camino a la fama
Aclaración: Campo es del tipo Char[30]

Sí, existen registros que cumplen la condición. La única forma de obtener resultados es hacer lo siguiente:

Select * From Tabla
Where Campo Like '%6000 ......24 espacios...... '

Porque como decía antes, si hago:

Select * From Tabla
Where Campo Like '%6000'

No obtengo resultados

Lo extraño es que al momento de cargar un valor en el campo, no he cargado esos espacios al final (al editar la tabla en una grilla tampoco aparecen). Estoy usando INSERT INTO para cargar los valores.

Saludetes....
Responder Con Cita
  #6  
Antiguo 26-02-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
Una aclaración... en lo de antes...
También valido like '%abc%' no es lo mismo que '%ABC%', en cambio en CONTAINING esto no importa....


En lo que me comentas
Código SQL [-]
Select * From Tabla
Where Campo Like '%6000 ......24 espacios...... '
No entiendo porque te puede pasar...
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita
  #7  
Antiguo 27-02-2007
TJose TJose is offline
Miembro
 
Registrado: may 2003
Posts: 162
Poder: 22
TJose Va por buen camino
Qué sucede si cambias char(30) por varchar(30)

TJose
Responder Con Cita
  #8  
Antiguo 27-02-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Precisamente ahí está el truquito.

Cualquier campo declarado con char(30) la base de datos lo rellena con espacios, hasta el límite declarado (en este caso 30).

Sin embargo con varchar(30) la base de datos se comportará exactamente como deseas, solo guardará los carácteres que hayas introducido (sin rellenar con espacios).

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #9  
Antiguo 27-02-2007
Avatar de rretamar
[rretamar] rretamar is offline
Miembro Premium
 
Registrado: ago 2006
Ubicación: San Francisco, Córdoba, Argentina
Posts: 1.168
Poder: 20
rretamar Va camino a la famarretamar Va camino a la fama
Thumbs up Gracias !

Muchas gracias a todos los que respondieron.

He realizado la misma prueba usando el dialecto SQL local del BDE (con una ta bla Paradox) y el error no se produce.

Es evidente que se me está rellenando con espacios el resto de los caracteres del campo.

Probaré reemplazar CHAR por VARCHAR (confieso que nunca usé ese tipo de datos). ¿ Este cambio puede tener algún inconveniente en cuanto a performance, espacio ocupado o algo similar ?

Saludos cordiales desde Argentina,
Responder Con Cita
  #10  
Antiguo 27-02-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Inconvenientes ninguno, eso si, deberás usar el collate ES_ES (o el de tu país), pero vamos, que eso es normal en char o varchar. Te sugiero crear un dominio y partir de ahí, ya que te será más cómodo asignar un dominio que establecer todas las propiedades a mano .

Incluso se podría decir que es más eficiente, ya que el SGBD no tendrá que añadir espacios ni quitarlos al mostrar los datos.

Quizás al pasar los datos del campo char hacia el campo varchar se incluyan esos espacios en blanco, no lo sé porque no he trabajado con tipos char.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #11  
Antiguo 01-03-2007
Avatar de rretamar
[rretamar] rretamar is offline
Miembro Premium
 
Registrado: ago 2006
Ubicación: San Francisco, Córdoba, Argentina
Posts: 1.168
Poder: 20
rretamar Va camino a la famarretamar Va camino a la fama
Thumbs up Eureka !!!

Probé modificar los campos CHAR[30] por VARCHAR[30] en registros ya existentes pero el resultado fue el mismo (como si al realizar el cambio de formato del campo, los espacios en blanco siguieran estando al final del valor).

Entonces borré todos los registros (es una tabla de pruebas...), como para empezar a insertar directamente valores en los campos VARCHAR[30] y voila !!! ahora puedo usar LIKE '%STRING' y obtener los resultados esperados.

Muchas gracias por la ayuda recibida.

Saludos desde Argentina...
Responder Con Cita
  #12  
Antiguo 07-03-2007
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

No era necesaro borrar los registro

Simplemte debias actualizar el campo con un sql usando la funcion trim
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema de UDF en Firebird 2.0 Kipow Firebird e Interbase 2 14-04-2008 16:34:51
Problema con FireBird AGAG4 Firebird e Interbase 11 02-04-2005 01:26:23
Problema C# y Firebird AdrianD .NET 6 07-09-2004 23:40:38
PROBLEMA CON SQL de FIREBIRD laaccaal SQL 0 12-08-2004 17:52:12
Problema en Firebird con dialecto 3 Leonidas Firebird e Interbase 1 24-07-2004 07:43:35


La franja horaria es GMT +2. Ahora son las 11:44:03.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi