Выражения CASE SQLServer - срывают оценку?

Работа с файлами Excel - определенно что-то, о чем люди заботятся. Я люблю следующего автора, который записал книгу по тому, как использовать Python в повседневной жизни: https://automatetheboringstuff.com/chapter12 /

Эта глава в особенности имеет дело с Python и Excel. Он описывает, как использовать пакет openpyxl. Необходимо быть в состоянии считать и отредактировать файл Excel с тем пакетом.

Что касается ftp, возможно, можно ли просто использовать ftp для этого?:) Иначе, существует много пакетов Python для контакта с ftp. I’m с помощью urllib.request прямо сейчас для доступа к веб-страницам.

6
задан OMG Ponies 3 September 2009 в 16:11
поделиться

2 ответа

Это фактический или предполагаемый план? Sql Server строит планы на основе того, что он ожидает сделать, на основе собранной статистики, и это не всегда согласуется с тем, какие конкретные условия вы отправляете ему для одного экземпляра выполнения запроса.

1
ответ дан 10 December 2019 в 00:41
поделиться

SQL - это декларативный язык. Вы выражаете в запросе желаемый результат, и сервер может выбрать любые средства для доставки этих результатов. Таким образом, порядок оценки epxressions SQL не определен, и короткое замыкание оценки OR и И не происходит.

Однако для CASE в документации фактически указано, что порядок оценки происходит в порядке объявления , и оценка останавливается после выполнения первого условия:

  • Evaluates ] input_expression , а затем в указанном порядке, вычисляет input_expression = when_expression для каждое предложение WHEN .

  • Возвращает result_expression из первого input_expression = when_expression , которое оценивается как TRUE .

Это означает, что если вы видите вычисленное выражение в ветви FALSE, ваше условие CASE неверно и иногда оценивается как FALSE или UNKNOWN. Убедитесь, что учтена логика SQL с тремя значениями (т.е. вы учитываете NULL). Также убедитесь, что данные в таблицах соответствуют вашим ожиданиям (т.е. условие на самом деле оценивается как ЛОЖЬ в 100% случаев).

9
ответ дан 10 December 2019 в 00:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: