sql >> Databasteknik >  >> RDS >> Oracle

Konvertera Oracle SQL-fråga till Azure SQL-fråga

Denna Oracle merge frågan har bara en WHEN NOT MATCHED sats och ingen WHEN MATCHED , så i princip är det insert och not exists :

insert into studies(study_id, study_date)
select x.*
from (values(@study_id, @study_date)) as x(study_id, study_date)
where not exists (select 1 from studies s1 where s1.study_id = x.study_id)

Detta motsvarar logiskt sett den ursprungliga Oracle-frågan.

När det gäller din ursprungliga fråga:SQL Server stöder sin egen smak eller merge uttalande , vars syntax är annorlunda än Oracle. Du skulle skriva om Oracles merge som:

merge studies as s
using (values(@study_id, @study_date)) as x(study_id, study_date)
on (s.study_id = x.study_id)
when not matched 
    then insert (study_id, study_date) values(x.study_id, x.study_date)



  1. Hur man får nästa nummer i en sekvens

  2. SQL Server-tabeller:vad är skillnaden mellan @, # och ##?

  3. Hur skapar man en databas med UTF-8-kollation i PostgreSQL på Windows?

  4. Hur man får radnummer i PostgreSQL