Минус против Разницы в ORACLE/SQL Server
MINUS - это операция набора SQL, которая выбирает элементы из первой таблицы, а затем удаляет строки, которые также возвращаются вторым оператором SELECT в Oracle. И в SQL Server мы можем использовать EXCEPT, чтобы сделать то же самое.
При переносе моего проекта с Oracle на SQL Server я заметил разницу. Если первый набор результатов не имеет записей, минус возвращает набор результатов второго оператора SELECT. Но в SQL Server EXCEPT ничего не возвращает. Что я могу сделать в этом случае? Я мигрирую свой проект и хочу выполнить ту же функцию минус в SQL Server.
Спасибо за вашу помощь
2 ответа
Нет никакой разницы между Oracle MINUS и SQL Server, КРОМЕ.
Они предназначены для того же.
- http://dotnetguts.blogspot.com/2008/04/minus-keyword-in-sql-server.html
- http://blog.sqlauthority.com/2008/08/07/sql-server-except-clause-in-sql-server-is-similar-to-minus-clause-in-oracle/
- http://vyaskn.tripod.com/oracle_sql_server_differences_equivalents.htm (поиск оператора MINUS), прочитайте описание, которое точно соответствует EXCEPT для SQL Server)
- Oracle MINUS vs SQL Server ЗА ИСКЛЮЧЕНИЕМ (сравните документы)
Это проверит любой набор результатов из первого запроса, затем запустит исключение, если есть результат. Если нет, то запускается только второй запрос.
IF EXISTS (SELECT NULL
FROM ... <first query criteria>
WHERE ...)
BEGIN
SELECT ... <first query>
EXCEPT
SELECT ... <second query>
END
ELSE
SELECT ... <second query>