Fórum ordenação sql apenas pelos dois ultimos caracteres #151837

03/04/2003

0

Tenho no campo que é do tipo string no interbase

os seguintes dados

01DV
03DV
04DV

se inserir o 02CA o campo finca assim

01DV
02CA
03DV
04DV

ele tem que ficar assim

02CA
01DV
03DV
04DV

como faço isso em SQL ?


Anonymous

Anonymous

Responder

Posts

04/04/2003

Adilsond

SELECT Campo,
SUBSTRING(Campo FROM 1 FOR 2),
SUBSTRING(Campo FROM 3 FOR 2)
FROM tabela
order by 3,2


Responder

Gostei + 0

06/04/2003

Anonymous

Obrigado pelo disposição em escrever o codigo,
porém ele não funcionou , pois diz que funcao substring nao existe,
executei as UDFs do interbase 6 e tentei substituir o nome SUSTRING para SUBSTR, mas tambem nao funcionou e a mensagem foi a seguinte

Invalid request BLR at offset 63
function SUBSTR is not defined


Responder

Gostei + 0

06/04/2003

Carlos Filho

Tenho no campo que é do tipo string no interbase os seguintes dados 01DV 03DV 04DV se inserir o 02CA o campo finca assim 01DV 02CA 03DV 04DV ele tem que ficar assim 02CA 01DV 03DV 04DV como faço isso em SQL ?


Lamento informar, mas acho que o que voce quer nao e possivel...
em qualquer computador do mundo os caracteres alfanuméricos são ordendos da esqerda para a direita e primeiro os números depois as letras...
a ordem que se programa gera esta correta para o computador. Isso que voce quer fazer usa uma lógica diferente, ou seja, você quer ordenar primeiro as letras e depois os numeros...
uma maneira de fazer isso funcionar é simplesmente mudando os codigos para q eles se tornem algo como:

CA02
DV01
DV03
DV04

Ou seja, letras antes...

outra maneira de fazer isso é como AdilsonD respondeu, só que ele misturou delphi com SQL, por isso deu erro...

usando a estrategia dele, você deverá copiar cada um dos códigos em um StringList, passo a passo, verificando a ordem apenas das letras finais...

eu particularmente acho muito mais facil mudar o tipo de código: LETRAS ANTES E NUMEROS DEPOIS

espero ter ajudado.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar