TSQl ИСКЛЮЧИТЬ валидацию - PullRequest
       4

TSQl ИСКЛЮЧИТЬ валидацию

0 голосов
/ 05 августа 2010

Привет! Я пишу длинную программу на TSQL, которая извлекает данные из OLD (и очень грязного набора данных), очищает данные и форматирует вывод, включая заголовки столбцов, чтобы соответствовать новому набору данных. В новом и старые таблицы. В целях тестирования я привожу по 100 тыс. Строк от каждого. Чтобы проверить, что структуры таблиц и атрибуты полей совпадают, мой босс попросил меня использовать TSQL EXCEPT. Я попал на наш сервер 2008 года и извлек данные из новой таблицы 2005 года и данные из старых заархивированных данных 2008 года.

Код, который я использую, выглядит следующим образом:

SELECT * FROM #NEW_TABLE
EXCEPT
SELECT * FROM #OLD_TABLE

Оператор EXCEPT выводит все 100 тыс. Записей из новой таблицы. Буду ли я прав, потому что в данных нет совпадений, а не проблем со структурой таблиц, поскольку я не получаю никаких ошибок вообще.

Ответы [ 2 ]

0 голосов
/ 05 августа 2010

Это верно, но это зависит от того, что вы подразумеваете под «соответствием».

Чтобы EXCEPT работал, все столбцы должны совпадать из обеих таблиц, чтобы удалить их из набора результатов. Это означает, что если у вас есть что-то похожее на:

ID  Name   Salary
--- ------ ------
1   John   550k
2   Sue    500k
3   Bill   40k

, и вы используете EXCEPT со следующим:

ID  Name   Salary
--- ------ ------
1   John   520k

Вы все равно увидите как ваш вывод:

ID  Name   Salary
--- ------ ------
1   John   550k
2   Sue    500k
3   Bill   40k
0 голосов
/ 05 августа 2010

Да - насколько я понимаю, вы получаете все записи в новой таблице, потому что ни одна из них не совпадает с записями в старой таблице (цель EXCEPT)

...