Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Parameter or All in SQL statement / 10 сообщений из 10, страница 1 из 1
25.09.2014, 00:12
    #38756864
Ckey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter or All in SQL statement
Привет Всем,
пожалуйста помогите с тупым вопросом.
Например есть квери:

Код: sql
1.
2.
3.
4.
declare @Papa varchar (10)
set @Papa = 'Vasja'

select * from Semya where PapaName = @Papa



Вопрос в том как мне выбрать всех папа если сета нет?

пробовал так, не хорошо:

Код: sql
1.
2.
3.
4.
declare @Papa varchar (10)
--set @Papa = 'Vasja'

select * from dbo.Semya where PapaName = (@Papa,0)



Заранее спасибо!
...
Рейтинг: 0 / 0
25.09.2014, 00:27
    #38756872
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter or All in SQL statement
Ckey,

select * from dbo.Semya where PapaName = isnull(@Papa,PapaName)
...
Рейтинг: 0 / 0
25.09.2014, 05:12
    #38756918
aleks2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter or All in SQL statement
alexeyvgCkey,

select * from dbo.Semya where PapaName = isnull(@Papa,PapaName)

Идеологически порочное условие.

Надо так
Код: sql
1.
2.
3.
4.
5.
select * from dbo.Semya where @Papa is null or PapaName =  @Papa -- так хоть понятнее
-- или
select * from dbo.Semya where PapaName =  @Papa -- а так еще и быстрее
union all
select * from dbo.Semya where @Papa is null
...
Рейтинг: 0 / 0
25.09.2014, 09:17
    #38756989
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter or All in SQL statement
aleks2alexeyvgCkey,

select * from dbo.Semya where PapaName = isnull(@Papa,PapaName)

Идеологически порочное условие.

Надо так
Код: sql
1.
2.
3.
4.
5.
select * from dbo.Semya where @Papa is null or PapaName =  @Papa -- так хоть понятнее
-- или
select * from dbo.Semya where PapaName =  @Papa -- а так еще и быстрее
union all
select * from dbo.Semya where @Papa is null

А так прикольно :
Код: sql
1.
SELECT * FROM dbo.Semya WHERE PapaName = ALL (SELECT @Papa WHERE @Papa IS NOT NULL);
...
Рейтинг: 0 / 0
25.09.2014, 11:37
    #38757205
aleks2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter or All in SQL statement
iap
[/src]А так прикольно :
Код: sql
1.
SELECT * FROM dbo.Semya WHERE PapaName = ALL (SELECT @Papa WHERE @Papa IS NOT NULL);

[/quot]

Забавный прикол.
А как там с использованием индексов на dbo.Semya.PapaName будет?
Ибо если с индексами будет хорошо - прикол имеет практический смысл.
Только "понятность" подкачала, ну да это дело привычки.
...
Рейтинг: 0 / 0
25.09.2014, 11:59
    #38757262
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter or All in SQL statement
aleks2,

с производительностью, кажется не очень.
По поводу понятности. Я впервые об этом узнал тут
Там daw приводит ссылку на ещё более раннее обсуждение 2005 года.
...
Рейтинг: 0 / 0
25.09.2014, 14:50
    #38757599
Maxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter or All in SQL statement
iap
Код: sql
1.
WHERE PapaName = ALL 


а так че-то не так прикольна
...
Рейтинг: 0 / 0
25.09.2014, 15:57
    #38757730
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter or All in SQL statement
Ckey,

еще вариант без union all
но насчет значения верхней границы не уверен
Код: sql
1.
select * from Semya where PapaName between isnull(@Papa, '') and isnull(@Papa, replicate(0xFF, 8000))
...
Рейтинг: 0 / 0
25.09.2014, 16:13
    #38757769
mittagswind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter or All in SQL statement
Shakill, использование таких функций в условиях отметает возможность использования индексов.

"За изобретение ставлю пять, а по предмету – неуд" (с) Приключения Шурика
...
Рейтинг: 0 / 0
25.09.2014, 16:27
    #38757789
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter or All in SQL statement
mittagswindShakill, использование таких функций в условиях отметает возможность использования индексов.

неправда ваша. границы получаются константами и индекс работает, в этом и весь смысл
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Parameter or All in SQL statement / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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