CONVERTER LETRAS EM NÚMERO

21/11/2013

EU TENHO O SEGUINTE CÓDIGO:
SELECT MATDISCIPLINA.ANO_LETIVO, Left(MATDISCIPLINA.TURMAID,2) AS Fluxo, MATDISCIPLINA.TURMAID, MATDISCIPLINA.ESCOLA, Mid(MATDISCIPLINA.TURMAID,3,1) AS Turno, Mid(MATDISCIPLINA.TURMAID,5,1) AS Serie, Mid(MATDISCIPLINA.TURMAID,6,1) AS Turma, MATDISCIPLINA.DISCIPLINA, ALUNO.ALUNO, ALUNO.NOME_COMPL, TURMA.NUM_ALUNOS, MATTURMA.SITUACAO, First(NZ([CONCEITOFINAL_AJUST],0)) AS CONCEITOFINAL_AJUSTA
FROM TURMA INNER JOIN (ALUNO INNER JOIN (MATTURMA INNER JOIN MATDISCIPLINA ON (MATTURMA.TURMAID=MATDISCIPLINA.TURMAID) AND (MATTURMA.SEMESTRE_TURMA=MATDISCIPLINA.SEMESTRE_TURMA) AND (MATTURMA.ANO_LETIVO=MATDISCIPLINA.ANO_LETIVO) AND (MATTURMA.ESCOLA=MATDISCIPLINA.ESCOLA) AND (MATTURMA.ALUNO=MATDISCIPLINA.ALUNO)) ON ALUNO.ALUNO=MATTURMA.ALUNO) ON (TURMA.ESCOLA=MATTURMA.ESCOLA) AND (TURMA.ANO_LETIVO=MATTURMA.ANO_LETIVO) AND (TURMA.SEMESTRE_TURMA=MATTURMA.SEMESTRE_TURMA) AND (TURMA.TURMAID=MATTURMA.TURMAID)
GROUP BY MATDISCIPLINA.ANO_LETIVO, Left(MATDISCIPLINA.TURMAID,2), MATDISCIPLINA.TURMAID, MATDISCIPLINA.ESCOLA, Mid(MATDISCIPLINA.TURMAID,3,1), Mid(MATDISCIPLINA.TURMAID,5,1), Mid(MATDISCIPLINA.TURMAID,6,1), MATDISCIPLINA.DISCIPLINA, ALUNO.ALUNO, ALUNO.NOME_COMPL, TURMA.NUM_ALUNOS, MATTURMA.SITUACAO
HAVING (((MATDISCIPLINA.ANO_LETIVO) Like [Ano Letivo:]) AND ((MATTURMA.SITUACAO)="Aprovado" Or (MATTURMA.SITUACAO)="Reprovado"))
ORDER BY Mid(MATDISCIPLINA.TURMAID,3,1), Mid(MATDISCIPLINA.TURMAID,5,1), Mid(MATDISCIPLINA.TURMAID,6,1), MATDISCIPLINA.DISCIPLINA, ALUNO.NOME_COMPL;

SENDO QUE O CAMPO: First(NZ([CONCEITOFINAL_AJUST],0)) AS CONCEITOFINAL_AJUSTA - ANTES ERA NUMÉRICO, AGORA É TEXTO (R, S OU I) POR ISSO NÃO ESTOU CONSEGUINDO GERAR A CONSULTA - TEM COMO INSERIR ALGUMA EXPRESSÃO QUE CONVERTA AS LETRAS R, S E I, EM NÚMEROS (TIPO R=5, S=10 E I=4 DE MODO QUE CONTINUE FAZENDO A OPERAÇÃO?

Valmir Silva

Respostas

21/11/2013

Alex Lekao

Oi Bom dia!!!

Nao consegui entender muito bem, e nao pude analisar muito bem o seu codigo.

Vou me ater a basicamente a questao que vc disse da conversao, sugiro usar o Case, assim vc checa se for cada um deles vc muda para o outro.

Por exemplo:
case 
   when seu_campo = 'r' then 5 
   when seu_campo = 's' then 2 
   else 1 
end


Faz um teste e veja se resolve dentro do que vc esta querendo.

Espero ter ajudado.

Abraco.

Alex - Lekao
Responder Citar

21/11/2013

Isaac Jose

Oi Bom dia!!! Nao consegui entender muito bem, e nao pude analisar muito bem o seu codigo. Vou me ater a basicamente a questao que vc disse da conversao, sugiro usar o Case, assim vc checa se for cada um deles vc muda para o outro. Por exemplo:
case 
   when seu_campo = 'r' then 5 
   when seu_campo = 's' then 2 
   else 1 
end
Faz um teste e veja se resolve dentro do que vc esta querendo. Espero ter ajudado. Abraco. Alex - Lekao





boa tarde a todos....
Lekao... e isso mesmo..

porem por motivo de performace...

sugiro que seja criada uma tabela desse case...


att Isaac
Responder Citar

21/11/2013

Alex Lekao

Legal...

foi a unica coisa que passou pela minha cabeca... rsrsr

maior correria... se a solucao era essa mesmo entao otimo... rsrs pensei certo. rsrsr

a nova tabela pode ser interessante sim, acho que deve ter menos peso na instrucao uma juncao que um case.

Obrigado.
Responder Citar

21/11/2013

Isaac Jose

Legal... foi a unica coisa que passou pela minha cabeca... rsrsr maior correria... se a solucao era essa mesmo entao otimo... rsrs pensei certo. rsrsr a nova tabela pode ser interessante sim, acho que deve ter menos peso na instrucao uma juncao que um case. Obrigado.


sim bem menor porem não sabemos se o nosso pensamento esta correto.kkkk
então vamos ver quando o amigo responder :)
Responder Citar

21/11/2013

Alex Lekao

blz...

sigo acompanhando... rsrs
Responder Citar

22/11/2013

Valmir Silva

Valeu vou tentar
Responder Citar

22/11/2013

Valmir Silva

EM QUE PARTE DO CÓDIGO EU COLOCO A EXPRESSÃO INDICADA?
Responder Citar

22/11/2013

Valmir Silva

o código é de uma consulta do banco de dados access (modo sql)
Responder Citar