Стенография Transact-SQL присоединяется к синтаксису?

Files.lines по умолчанию использует кодировку UTF-8 , тогда как создание новой строки из байтов будет использовать системную кодировку по умолчанию. Похоже, что ваш файл не находится в UTF-8, поэтому он не работает.

Проверьте, какая кодировка используется вашим файлом, и передайте его как второй параметр.

15
задан Allan Simonsen 17 February 2009 в 17:10
поделиться

5 ответов

= * и * = не жалоба с текущими стандартами SQL, я полагаю, что эти операторы будут скоро удержаны от использования, необходимо всегда использовать стандартный синтаксис соединения. Другие операторы, которые Вы упоминаете, сбивают с толку и должны уйти, я съеживаюсь, когда я вижу их в объектах базы данных.

14
ответ дан 1 December 2019 в 03:15
поделиться

При использовании SQL Server действительно ни при каких обстоятельствах когда-либо используйте тот синтаксис. Существуют времена, когда неправильные результаты возвращаются, так же иногда SQL-сервер интерпретирует это правильно как внешнее объединение, и иногда он интерпретирует тот синтаксис как перекрестное объединение. Так как наборы результатов этих двух решительно отличаются, Вы никогда не можете полагаться на результаты использования этого синтаксиса. Далее, SQL Server, 2008 является последней версией SQL-сервера, который даже позволит sysntax.

2
ответ дан 1 December 2019 в 03:15
поделиться

Мое личное мнение (после того, как 6 + годы в SQL & TSQL), то, что этот стиль прежней версии только мешает другим разработчикам, не сведущим в традиционном синтаксисе для легкого понимания кода. Я всегда предпочитаю более подробный & описательный синтаксис, если производительность не произведена - Вы, никогда не знает, когда то, что вы оказывались перед необходимостью передает поддержку того кода :)

1
ответ дан 1 December 2019 в 03:15
поделиться

Причина, по которой он имеет непреднамеренные последствия, заключается в том, что он интерпретирует предложение ENTIRE where как предложение JOIN. Пример:

Select1:

select * from table a left join table b on a.id=b.id
     where b.name = "hello world"

VS

Select2:

select * from table a left join table b on a.id=b.id and b.name = "hello world"

Эти 2 выбора возвращают разные результаты. Когда вы пишете такое утверждение:

select * from tablea,tableb where tablea.id *= tableb.id and b.name="hello world"

Я ожидал бы, что большинство людей ХОТЯТ результаты от Select1 ... но вы фактически получите результаты от Select2.

5
ответ дан 1 December 2019 в 03:15
поделиться

Я бы не стал использовать синтаксис * = или = (+), поскольку они несовместимы с другими СУБД или даже в случае сервера MSSQL, совместимого с более поздними версиями, если вы не включите низкие уровни совместимости. В таком случае возникает серьезное беспокойство, что в какой-то момент MS просто полностью откажется от его поддержки.

Мне потребовалось некоторое время, чтобы привыкнуть к изменению моих "старых" привычек .. Я предпочел синтаксис * =, потому что его было меньше печатать и с более простым потоком равных объединений (которые совершенно все еще действительны и приемлемы)

Одним из моих возражений против перехода к использованию JOINS был весь этот набор текста и беспорядок, который я обнаружил в примерах запросов с их использованием.

Некоторые уловки я обнаружил просто проблемы с форматированием и знание того, что действительно требуется. Использование «INNER» и «OUTER» полностью излишне и необязательно.

1
ответ дан 1 December 2019 в 03:15
поделиться
Другие вопросы по тегам:

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