Используя псевдоним в вопросе и использовании его

У меня есть сомнение и вопрос относительно псевдонима в sql. Если я хочу использовать псевдоним в том же вопросе, может я использовать его. Для, например: Рассмотрите Имя таблицы xyz с колонкой a и b

select (a/b) as temp , temp/5 from xyz

Действительно ли это возможно в некотором роде?

17
задан Filip Ekberg 13 January 2010 в 07:40
поделиться

4 ответа

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

, который невозможен в Microsoft SQL Server, который почти все Мой опыт SQL ограничен. Но вы можете сделать следующее.

SELECT temp, temp / 5
FROM (
    SELECT (a/b) AS temp
    FROM xyz
) AS T1

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

В MSSQL у вас также есть возможность создания вычисленных столбцов, указанных в таблице схема, а не в запросе.

14
ответ дан 30 November 2019 в 13:45
поделиться

Невозможно в том же Выберите пункт , предполагая, что ваш продукт SQL соответствует стандарту начального уровня SQL-92.

Выражения (и их корреляционные имена) в разделе SELECT выберите пункт . Нет никакой оценки вправо, что вы, кажется, надеяетесь.

Согласно ответу @josh Einstein здесь, вы можете использовать производную таблицу в качестве обходного пути (надеюсь, что используя значимое имя Mote, чем «Temp» и предоставляя один для выражения / 5 . разумейте человека, который наследует ваш код).

Обратите внимание, что выступил код кода, будет работать над двигателем базы данных MS Access (и назначит бессмысленное имя корреляции, такое как expr1 на ваше второе выражение), но затем снова это не реальный продукт SQL.

2
ответ дан 30 November 2019 в 13:45
поделиться

Вы можете найти W3Schools "SQL Alias" в качестве хорошей помощи.

Вот пример из их учебника:

SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p,
Product_Orders AS po
WHERE p.LastName='Hansen' AND p.FirstName='Ola'

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

-2
ответ дан 30 November 2019 в 13:45
поделиться

У меня была аналогичная проблема. Для меня после того, как цитаты были сохранены в базе данных они появились таким образом "В" ".

SELECT abstract FROM foo WHERE version = '1.0' and newscode = 'au20309';

МаэВ 'р Ффорд Гыналиадви-и-Май-н-Каэль-эй-дыфу, эй Брыну аВ' и баратои...

Так я их заменил. Сначала найдите значение ascii для этого необычного символа «В».

SELECT ascii('Â') FROM DUAL; -- returns 50050

Затем используйте функцию chr для отображения «В». Функция | | объединяет два символа. Функция q полезна для «цитирования» последовательности кавычек..

SELECT REPLACE(abstract,chr(50050) || q'#’#' , q'#'#') 
FROM foo 
WHERE version = '1.0' and newscode = 'au20309';

Mae 'r ffordd gynaliadwy y mae bwyd yn cael ei dyfu, ei brynu a' i baratoi...

Это прекрасно сработало для меня в нашей системе Oracle 10.

-121--5000493-
  1. Стандартные счетчики производительности Windows (поиск других коррелированных операций, таких как множество запросов GET, чрезмерное количество сетевых или дисковых операций ввода-вывода и т.д.); вы можете прочитать их из кода, а также из perfmon (например, для запуска сбора данных, если использование ЦП превышает пороговое значение)
  2. Пользовательские счетчики производительности (в частности, время для автономных запросов и других вызовов с неопределенным временем выполнения)
  3. Загрузить тестирование с помощью таких средств, как Visual Studio Team Test или WCAT
  4. Если можно протестировать или обновить IIS 7, можно настроить трассировку неудачных запросов, чтобы создать трассировку, если запросы занимают больше времени
  5. Используйте logparser для просмотра запросов, поступивших во время пика процессора
  6. . (в частности, искать петли, которые могут не завершиться должным образом, например, если произойдет ошибка, а также блокировки и потенциальные проблемы с многопоточностью, такие как использование статики)
  7. Профилирование ЦП и памяти (может быть затруднено в производственной системе)
  8. Проводник процессов
  9. Монитор ресурсов Windows
  10. Подробное ведение журнала ошибок
  11. Пользовательское ведение журнала трассировки, включая сведения о времени выполнения (возможно, условный, основанный на счетчике производительности использования ЦП)
  12. Происходят ли ошибки при повторном использовании AppPool? Если да, то это может быть подсказкой.
-121--1011269-

Можно также использовать Oracle с оператором . Аналогичные операторы доступны и в других БД. Вот тот, который мы используем для Oracle.

with t
as (select a/b as temp
from xyz)
select temp, temp/5
from t
/

Это имеет преимущество в производительности, особенно при наличии сложных запросов, включающих несколько вложенных запросов, поскольку оператор WITH вычисляется только один раз и используется в последующих операторах.

5
ответ дан 30 November 2019 в 13:45
поделиться
Другие вопросы по тегам:

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