Как зарезервированное ключевое слово * работает в SQL - PullRequest
0 голосов
/ 20 февраля 2019

Как инструменты rdbms выполняются * в операторах выбора.Причиной возникновения вопроса является его разное использование в разных инструментах rdbms.Пример: oracle и db2 выдают ошибку в приведенных ниже инструкциях, однако отлично работают в mysql, mssql, sybase.Выглядит как проблема с парсером sql.

select col_name,* from table_name 

Или

select *,col_name from table_name

Ответы [ 3 ]

0 голосов
/ 25 февраля 2019

Db2 11.1 поддерживает неквалифицированную * с.Например,

db2 "create table table_name( col_name int )"
DB20000I  The SQL command completed successfully.

db2 "select col_name,* from table_name"

COL_NAME    COL_NAME   
----------- -----------

  0 record(s) selected.
0 голосов
/ 25 февраля 2019

https://en.wikipedia.org/wiki/SQL#Interoperability_and_standardization

Реализации SQL несовместимы между поставщиками и не обязательно полностью соответствуют стандартам.

См. Ссылку на Википедию выше по некоторым из "нескольких причинза отсутствие переносимости между системами баз данных "

0 голосов
/ 20 февраля 2019

Oracle (и, вероятно, DB2) также принимает неукрашенные * только в том случае, если в SELECT.

отсутствуют другие ссылки на столбцы или выражения. Однако это всегдадопускается с псевдонимом таблицы.Таким образом, вы можете написать:

select col_name, t.*
from table_name t

Только одно предупреждение: результирующий набор будет иметь два столбца с одинаковым именем, что может вызвать другие проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...