2016-03-23 2 views
2

Следующий запрос правильно написан для SQL Server, но не для Oracle.Переименуйте столбец в SQL выберите для SQL Server и Oracle

SELECT col1 AS 'col1_new_title', 
     col2 AS 'col2_new_title', 
     col3 
FROM table 

Для Oracle это знак равенства, с новым именем спереди.

Есть ли способ написать этот запрос, чтобы он исполнялся в обеих средах, без необходимости переписывать его каждый раз?

+0

Это не совсем правильно, одинарные кавычки не должны использоваться для этой цели. Вместо этого попробуйте использовать двойные кавычки. И это псевдонимы столбцов, которые вы фактически не переименовали в столбец, который требует DDL. –

+0

"* Для Oracle это должен быть знак равенства, с новым именем спереди. *" - нет, абсолютно нет. –

ответ

1

Причина, по которой ваше заявление не работает в Oracle, вызвано одиночными кавычками. В SQL-идентификаторы должны быть заключены в двойные кавычки, если вы хотите, чтобы они были чувствительны к регистру. Одиночные кавычки для строковых констант.

Так следующее

SELECT col1 AS "col1_new_title", 
     col2 AS "col2_new_title", 
     col3 
FROM table 

должны работать на обеих системах (на самом деле на любые СУБД, которая соответствует стандарту SQL правилам для идентификаторов)

Для SQL Server этого требует параметр конфигурации «ANSI_QUOTES» (или что-то подобное, я не помню точное имя), которое должно быть установлено на ON - что я считаю по умолчанию в любой последней версии SQL Server.

Если вы не заботитесь о UPPER/строчных идентификаторы просто не используют кавычки вообще:

SELECT col1 AS col1_new_title, 
     col2 AS col2_new_title, 
     col3 
FROM table 
+0

Быстрый, полный - с дополнительными объяснениями для меня, чтобы узнать. Не могу ожидать этого лучше! Большое спасибо. – user3341592

+1

Использование одинарных кавычек принимается сервером sql, но документация по идентификаторам указывает двойные кавычки или квадратные скобки. Поэтому messsge абсолютно избегает одинарных кавычек для псевдонимов столбцов. –

0
SELECT 
     col1 col1_new_title 
    , col2 col2_new_title 
    , col3 
FROM table 

Если у вас нет пробелов и избегать зарезервированных слов, то скелетным подход выше будет работают на большинстве диалектов SQL.

Примечание: Оракул не требует as и в действительности не принимает его в некоторых случаях, таких как псевдонимы таблиц.

Если этот простой подход не работает, добавьте двойные кавычки в псевдонимы столбцов.