Jump to content
Fórum Script Brasil
  • 0

(Resolvido) XML Modelado


Vitor Alves
 Share

Question

Bom dia galera!

Estou tentando fazer um exercício da faculdade aqui e está um pouco complicado, vamos lá!

Criei este banco:

create database hospital

set dateformat ymd -- definindo a data no padrão europeu

create table medico (
                        crm varchar(10)
                        constraint pk_medico primary key,
                        nome varchar(50) not null,
                        telefone char(13)
                        )

--inserindo médicos
insert into medico (crm, nome, telefone) values ('133.493-SP','Dr. Oswaldo Peru','(11)4013-1544')
insert into medico (crm, nome, telefone) values ('139.319-SP',' Dr. Marco Lima SILVA ','(15)2019-9548')
insert into medico (crm, nome, telefone) values ('217.453-RJ','Dr. ValDEMAR Rossi','(11)8267-4124')
O exercício pede isso:
/*Crie uma consulta no banco de dados que permita exportar os médicos para o sistema da ALLMED. 
De acordo com a documentação da ALLMED, o layout exigido para exportar os médicos é o seguinte:

<doctors>
<doctor llmd="133493" name="PERU, OSWALDO" phone="1140131544" />
<doctor llmd="139319" name="SILVA, MARCO" phone="1520199548" />
<doctor llmd="217453" name="ROSSI, VALDEMAR" phone="1182674124" />
</doctors>*/
Eu consegui montar isto:
select
  crm as llmd,
  UPPER(left (substring(nome,charindex(' ',nome,1),99),0)+','
  +substring(nome,charindex(' ',nome,2),99)) as name,
  SUBSTRING(telefone,2,2)+ SUBSTRING(telefone,5,4)+ SUBSTRING(telefone,5,4) as phone
from
  medico as doctor
for xml auto, root('doctor')

O que está me matando é a inversão dos nomes ali no meio, eu não sei nem como inverter e muito mesmo como excluir o nome do meio, como é o caso do MARCO LIMA SILVA.

Desde já agradeço qualquer ajuda!

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Segue solução.

SELECT LEFT(crm,3)+Substring(crm,5,3) AS llmd, 
       REVERSE(SUBSTRING(LTRIM(REVERSE(UPPER(SUBSTRING(LTRIM(nome),1,LEN(nome))))),1,
       (CHARINDEX(' ',(LTRIM(REVERSE(Upper(SUBSTRING(LTRIM(nome),1,LEN(nome)))))))))) 
       + ', '+( UPPER(SUBSTRING((SUBSTRING(LTRIM(nome),5,LEN(nome))),1, 
       CHARINDEX(' ',(SUBSTRING(LTRIM(nome),5,LEN(nome))))))) AS name, 
       SUBSTRING(telefone,2,2)+SUBSTRING(telefone,5,4)+SUBSTRING(telefone,10,4) AS phone 
FROM   medico AS doctors 
FOR xml auto, root('doctors')

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.2k
    • Total Posts
      647.5k
×
×
  • Create New...