Pessoal,
Estou precisando de uma ajuda em como posso manipular um campo alfanumerico.
Em minha tabela tenho um código no seguinte formato: AAA0000 , AAA0001, …
Preciso comparar por exemplo se AAA1000 é maior que AAA0000, e também o número de ‘códigos’ que tenho nesse intervalo.
Ficarei grato com a ajuda de vocês!
Para verificar se aaa1000 é maior que aaa0000 é simples porque é uma comparação simples de strings.
para saber quantos códigos há de diferença (por exemplo, entre cab1234 e abc7654) você pode tratar os códigos como se fossem números em uma base especial (os primeiros 3 caracteres seriam dígitos em base 26, e os últimos 4 caracteres são dígitos em base 10.
Para facilitar a conversão (já que, como você deve saber, o Java entende como base-26 dígitos na sequência 0123456789abcdefghijklmnop, não abcdefghijklmnopqrstuvwxyz), você pode fazer a “conversão no braço” mesmo.
Por exemplo, para o código abc7654, você poderia pensar nele como “abc x 10000” + 7654, e o código abc seria:
(‘a’ - ‘a’) * 676 + (‘b’ - ‘a’) * 26 + (‘c’ - ‘a’) = 28. Ou seja, o código teria o valor decimal de 287654, e você poderia comparar com facilidade com o código cab1234 : o código cab é (‘c’ - ‘a’) * 676 + (‘a’ - ‘a’) * 26 + (‘b’ - ‘a’) = 1353, ou seja, o código cab1234 é 13531234.