Comparar 2 cadenas con diferentes formatos.
Buenos dias.
Quisiera saber si a alguien se le ocure como comparar 2 cadenas con formatos variables es decir, ilustrando con un ejemplo: Cadena1 = LNNNNNNN (L=LETRA N=NUMERO) Quiero que la condicion se cumpla cuando la Cadena 2 sea = a LNNNNNNN es decir Cadena1=Cadena2 pero TAMBIEN: L-NNNNNNN L NNNNNNN (Con un espacio) Programando en delphi por ej compararia el primer caracter de la cadena y luego los 7 ultimos para "ignorar" de esta forma el espacio guion o ausencia de ambos. Pero no tengo ni idea de como traducir esto en SQL. Gracias a todos. Y fuerza a los que vuelven de vacaciones :p |
Comparar Cadenas en SQL
Hola:
Por lo que entendi de tu explicacion pudieras utilizar like'L%' Saludos Luis Garcia |
No me sirve el Like'L%'
Porque entonces me encierro en caracter 'L' y lo que sea... Que que quiero yo es comparar 2 cadenas y que me cumpla el requesito cuando la primera letra es identica (pudiendose ser cualkier letra, y no una definida) y los 7 ultimos caracteres sean 7numeros identicos entre ellos. por lo cual cumpliria los requisitos en estos diferentes casos: 'A0000000' comparado con 'A-0000000' 'A 0000000' comparado por 'A 0000000' y no lo cumpiria en estos: 'A0000000' comparado con 'B0000000' 'A0000000' comparado con 'A-0000001' |
¿Y por qué no transformas a un formato siempre igual las cadenas que te introducen? Así te evitas ese paso.
|
Pues porque la BD esta echa ya... y no tengo ni voz ni voto ^^
Con lo facil que seria formatear a la entrada... Estamos 100% de acuerdo. Entonces nadie sabria como comparar por ejemplo de 2 cadenas en SQL que 1-El primer caracter sea igual 2-que los 7 ultimos tmb lo sean? para que se de el caso ANNNNNNN = ANNNNNNN ANNNNNNN = A NNNNNNN ANNNNNNN = A-NNNNNNN |
si usas firebird, con UDFs
Hola
si usas firebird (y supongo que interbase tambien) puedes compilar la UDF substr * Functional description: * substr(s,m,n) returns the substring * of s which starts at position m and * ending at position n. * Note: This function is NOT limited to * receiving and returning only 255 characters, * rather, it can use as long as 32767 * characters which is the limit on an * INTERBASE character string. * Change by Claudio Valderrama: when n>length(s), * the result will be the original string instead * of NULL as it was originally designed. y con esta podrias hacerlo dentro de una consulta sql Saludos Pablo |
en firebird 2 ...
En firebir 2 no es necesario compilar la UDF substr
ya viene substring no se en firebird 1.5.... SUBSTRING('ANNNNNNN' from 1 for 1) retorna A SUBSTRING('A NNNNNNN' from 3 for 7) retorna NNNNNNN con esto deberias poder realizar tu consulta Saludos Pablo |
La franja horaria es GMT +2. Ahora son las 07:56:36. |
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