Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вычисление выражений / 5 сообщений из 5, страница 1 из 1
01.11.2002, 18:06:03
    #32064202
vap
vap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисление выражений
Иногда в запросе вычисляется выражение и оно используется в условии.
Есть ли способ не повторять 2 раза выражение CONVERT(VARCHAR,ID)+ '-' + NAME

Код: plaintext
1.
2.
SELECT CONVERT(VARCHAR,ID)+ '-' + NAME AS Result
FROM SysObjects
WHERE LEN(CONVERT(VARCHAR,ID)+ '-' + NAME)> 20 
...
Рейтинг: 0 / 0
01.11.2002, 18:48:28
    #32064221
VVG_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисление выражений
Код: plaintext
1.
2.
select * from 
(SELECT CONVERT(VARCHAR,ID)+ '-' + NAME AS Result FROM SysObjects) as foo
WHERE LEN(RESULT)> 20 
...
Рейтинг: 0 / 0
02.11.2002, 10:01:32
    #32064308
vap
vap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисление выражений
VVG_ вы обошли повтор, но возможно он будет в 2 раза дольше выполняться.
Иногда приходится писать сложные запросы с длинными выражениями, хотелось бы их не дублировать.
...
Рейтинг: 0 / 0
02.11.2002, 12:34:40
    #32064324
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисление выражений
2vap
но возможно он будет в 2 раза дольше выполняться.

Если вы посмотрите на планы выполнения предложенных запросов, то увидите, что они абсолютно одинаковы.
...
Рейтинг: 0 / 0
02.11.2002, 12:59:13
    #32064330
vap
vap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисление выражений
Ok, убедили
SQL Server достаточно умен, чтобы повторно не сканировать временную выборку.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вычисление выражений / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]