FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Consultas con TRIM
hola a todos, les cuento tengo una base de datos Firebird y lenguaje Delphi 7, tengo una tabla camiones y otra acoplados cada una con un campo Patente, lo que necesito es que al cargar un nuevo camion o acoplado no me deje repetir la patente, pero el tema es que la patente entre las letras y los numeros hay un espacio por lo que necesito quitarlo para poder comparar, no se si me explique, pero eso lo tengo que hacer mediante una consulta SQL y creeria que se puede hacer mediante el TRIM pero e probado y no me funciona. Espero su ayuda y desde ya muchas gracias.
|
#2
|
||||
|
||||
Saludos.
No dices que versión de FB tienes, pero FB 2.x tiene la función TRIM de forma nativa y funciona a la perfección; para evitar duplicidad pon el (o los) campo(s) UNIQUE o PK y así te FB te mandara una excepción en caso de que se trate de duplicar. Si TRIM no funciona piensa entonces en hacer una UDF. Hasta luego.
__________________
Gracias, Rolphy Reyes |
#3
|
|||
|
|||
hola, utilizo la version 1.5 de Firebird, y quisiera que me ejemplifiques como lo haces vos, para poder comparar. Gracias desde ya
|
#4
|
||||
|
||||
Yo que vos lo haría la comprobación de que la patente tenga el formato correcto (sin espacios) antes de grabarlo en la base de datos. Esto se hace desde Delphi en el BeforePost.
Ejemplo:
Última edición por duilioisola fecha: 19-03-2008 a las 17:30:16. |
#5
|
||||
|
||||
Tembién podrías pasar toda la patente a mayúsculas, para evitar duplicados
B1234567 no es igual a b1234567
|
#6
|
||||
|
||||
Firebird 1.5 no tiene el trim de forma nativa, para usarlo se tiene que definir una udf (o dos creo yo) que son
despues de declarar las anteriores udfs puede hacer un query similar a:
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H" |
#7
|
||||
|
||||
Cita:
Para mi Trim (o lTrim / rTrim) quita los espacios al principio y/o al final de la cadena de caracteres. Pero no los de enmedio. A lo mejor me estoy equivocando. Por lo que la única manera que veo de solucionar el problema que plantea marilinspi es manipulando el String antes y/o después de grabarlo en la base de datos. Algo así como está exponiendo duilioisola. En cualquier caso, propongo una solución adicional y alternativa. Yo grabo los datos en mi base de datos tanto con los espacios (y posibles caracteres especiales que puedan ser necesarios o que indique el usuario), así como en otro campo adicional de la tabla donde se hayan eliminado previamente todos esos caracteres especiales. Y siempre realizaré la búsqueda por ese campo adicional que no contiene ningún carater especial (y teniendo en cuenta el tema del UpperCase), y por otro lado tendré siempre disponible el string original que haya introducido el usuario.
__________________
Piensa siempre en positivo ! |
#8
|
||||
|
||||
ups, si, el trim, ltrim o rtrim no quita espacios al interior, solo en los extremos, en Firebird se me ocurre haciendo un procedimiento almacenado con una variable Input TextoEntrada de tipo Varchar(xxx), una Auput TextoSalida de tipo Varchar(xxx) otra variable c de tipo Varchar(1)y dos variables de tipo Entero "i" "j"
y la puede consultar algo así como:
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H" Última edición por RONPABLO fecha: 19-03-2008 a las 20:08:19. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
consultas con like | Choclito | Firebird e Interbase | 1 | 02-01-2008 21:11:44 |
Consultas SQL V.S. Consultas Clipper | AGAG4 | SQL | 7 | 20-12-2005 15:59:31 |
trim en campos varchar | galmacland | SQL | 3 | 12-03-2005 02:40:23 |
Consultas | agilaberte | SQL | 1 | 04-04-2004 13:42:54 |
Consultas | NickName | Firebird e Interbase | 1 | 27-11-2003 05:37:27 |
|