Ayuda con una cadena de caracteres

Necesito ayuda con una cadena de caracteres...
El campo es de tipo carácter, pero necesito contabilizar cuantas candenas de 13 dígitos hay en cada fila... Ejemplo.
1057559199999 - 1057559199999 - 1057559199999
Como contabilizo cuantas cadenas de 13 números hay... Ya intente de muchas formas, pero nomas no...
Cabe mencionar que después de la cadena también hay algunas veces hay letras, por ejemplo:
1057559199999 - PRPRSL72031229H900 - 01
Para este caso, solo necesitaría el valor de la primera cadena de 13 números, que seria 1.
Si alguien me ayuda por favor...

1 Respuesta

Respuesta
1
pues no entiendo muy bien lo que preguntas pero puedes aplicar una función dentro del querry
por ejemplo
select cadena , iif(len(cadena) >= 13 , substring(cadena,1,13),"No Es Mayor") as "Campo_Extra" from <Nombre de la tabla> into cursor Cursor1
select Cursor1
brow
Esto te saca todos los datos de la tabla y si la cadena es mayor de 13 entonces te pone los primeros 13 en otro campo llamado "Campo_Extra" y sino es te escribe en el "Campo_Extra" "No es Mayor" ahí creo que ya puedes sino te sale me avisas o explicate mejor suerte!
Ok.. va de nuez... tengo un campo que se llama doc_anexa, y es de tipo carácter, los datos que pueden estar en el campo pueden ser los siguientes:
1.-1020102105180 - 1020102105180 -
2.- 0925152109565 -0925152109565 -0925152109565
3.- HRHRMR91011031H200 - 00
4.- 1050502106315 - VZVZAL91091330H700 - 00
estos son los 4 tipos de información que puede contener el campo...
¿Qué es lo que quiero?
Primero... necesito saber cuantas cadeneas de 13 deigitos consecutivos hay, por ejemplo:
Para el punto 1, tendría ser 2,
para el punto 2, tendría que ser 3,
para el punto 3 nada, por que no tiene un consecutivo de 13 dígitos seguidos como los demás
paa el punto 4, tendría que ser 1.
Ya lo intente de la siguiente manera
SUBSTR(DOC_ANEXA,1,4)>=alltrim("08") or SUBSTR(DOC_ANEXA,17,4)>=alltrim("08") or SUBSTR(doc_anexa,33,4)>=alltrim("08")
Para el punto 4 si me funciona, pero para el punto 2 o 3, no me lo reconoce y me saca otra información que no quiero...
Espero tu ayuda... gracias...
Pues necesitas hacer un ciclo o bueno eso aria yo generar un ciclo que me tome de 8 en 8 la cadena por ejemplo
Cadena = "12345678-12345678-12345678-sdfkjlksd" && Este es tu campo
Contador = 0
DO WHILE LEN(Cadena) >= 8
IF VAL(SUBSTR(Cadena,1,8)) > 0
Contador = Contador + 1
ENDIF
Cadena = RIGHT(Cadena,LEN(Cadena) - 9) && ak se cambia
ENDDO
MESSAGEBOX(Contador)
Al final el contador te dice cuantas veces encontró una cadena de dígitos conformada por 8. solo existe un problema la cadena no tiene que llevar espacios y tiene que llevar un guion ya que ahí, sino lleva guion tienes que poner donde dice 9 por un ocho y si lleva más por ejemplo que lleve " - " tienes que agregarle 2 más es decir en vez del 9 va un 10 y así sucesivamente... si tienes alguna otra duda escribe nuevamente

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas