Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Comparar 2 cadenas con diferentes formatos. (https://www.clubdelphi.com/foros/showthread.php?t=47394)

NSL94 27-08-2007 11:29:20

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

lgarcia 27-08-2007 13:11:32

Comparar Cadenas en SQL
 
Hola:

Por lo que entendi de tu explicacion pudieras utilizar like'L%'

Saludos

Luis Garcia

NSL94 30-08-2007 09:11:19

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'

Radov3r 11-09-2007 12:10:07

¿Y por qué no transformas a un formato siempre igual las cadenas que te introducen? Así te evitas ese paso.

NSL94 17-09-2007 11:20:11

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

hach 21-09-2007 20:06:32

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

hach 21-09-2007 20:16:36

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:05:19.

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