Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как можно проверить на равенство без iif ? / 24 сообщений из 24, страница 1 из 1
13.07.2020, 11:52
    #39978860
AdamAry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно проверить на равенство без iif ?
Для проверки равенства я использую iif:
select col1 = iif( (SELECT session_id FROM sys.dm_exec_requests where command = 'select') != @@spid, 1, 2);
Как можно проверить на равенство без iif ?
...
Рейтинг: 0 / 0
13.07.2020, 12:11
    #39978871
godsql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно проверить на равенство без iif ?
AdamAry,

case и exists?
...
Рейтинг: 0 / 0
13.07.2020, 12:15
    #39978872
AdamAry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно проверить на равенство без iif ?
godsql,
авторcase и exists
с примерами и поподробней можно?
...
Рейтинг: 0 / 0
13.07.2020, 12:25
    #39978886
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно проверить на равенство без iif ?
AdamAry,

Код: sql
1.
2.
3.
4.
if exists (select 1 from sys.dm_exec_requests where [session_id] <> @@SPID AND [command] = 'SELECT')
    select 1 as [col];
else
    select 2 as [col];
...
Рейтинг: 0 / 0
13.07.2020, 12:38
    #39978897
godsql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно проверить на равенство без iif ?
Код: sql
1.
2.
3.
4.
select @cl = case  
				when exists (SELECT session_id FROM sys.dm_exec_requests where command = 'select' and  session_id != @@spid) then 1
				else  2
				end
...
Рейтинг: 0 / 0
13.07.2020, 12:59
    #39978915
AdamAry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно проверить на равенство без iif ?
felix_ff,
я неправильно сформулировал вопрос.
Постараюсь на примере спросить
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
declare @v1 int = 1, @v2 int = 2;
select equalsornot = (@v1 = @v2); -- вот это даёт ошибку: Incorrect syntax near '='.

declare @v1 int = 1, @v2 int = 2;
select (@v1 = @v2) as  equalsornot; -- вот это даёт ошибку: Incorrect syntax near '='.

declare @v1 int = 1, @v2 int = 2;
select iif(@v1 = @v2, 1, 0); --  как проверить две переменные на равность без использования iif
...
Рейтинг: 0 / 0
13.07.2020, 13:01
    #39978917
AdamAry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно проверить на равенство без iif ?
godsql,

Код: sql
1.
2.
declare @v1 int = 1, @v2 int = 2;
select eqls = iif(@v1 = @v2, 1, 0); -- как это сделать без iif
...
Рейтинг: 0 / 0
13.07.2020, 13:02
    #39978919
godsql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно проверить на равенство без iif ?
AdamAry,
Код: sql
1.
select eqls = case when (@v1 = @v2) then 1 else  0 end;



MS SQL 2005? :)
...
Рейтинг: 0 / 0
13.07.2020, 13:49
    #39978952
AdamAry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно проверить на равенство без iif ?
godsql,
Отлично:
Код: sql
1.
select eqls = case when (@v1 = @v2) then 1 else  0 end;





авторMS SQL 2005?
2014
...
Рейтинг: 0 / 0
13.07.2020, 13:52
    #39978956
AdamAry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно проверить на равенство без iif ?
AdamAry,
Нет ли чего попроще чем
Код: sql
1.
iif

или?:
Код: sql
1.
select eqls = case when (@v1 = @v2) then 1 else  0 end;
...
Рейтинг: 0 / 0
13.07.2020, 14:12
    #39978974
godsql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно проверить на равенство без iif ?
AdamAry,

Код: sql
1.
select eqls = cast(@v1-@v2 as bit)


только тут наоборот, 0 - равно, 1 - не равно
:)
...
Рейтинг: 0 / 0
13.07.2020, 14:23
    #39978986
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно проверить на равенство без iif ?
godsql
только тут наоборот, 0 - равно, 1 - не равно
:)

Код: sql
1.
select eqls = ~cast(@v1-@v2 as bit)
...
Рейтинг: 0 / 0
13.07.2020, 15:14
    #39979030
AdamAry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно проверить на равенство без iif ?
godsql,
вот это да:
Код: sql
1.
select eqls = cast(@v1-@v2 as bit)
...
Рейтинг: 0 / 0
13.07.2020, 15:16
    #39979034
AdamAry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно проверить на равенство без iif ?
Сон Веры Павловны,
Код: sql
1.
select eqls = ~cast(@v1-@v2 as bit)


бац бац и в точку: ~
что делает оператор?: ~
реверсирует похоже, всё подряд или только тип bit?
...
Рейтинг: 0 / 0
13.07.2020, 15:19
    #39979037
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно проверить на равенство без iif ?
AdamAry
Код: sql
1.
select eqls = ~cast(@v1-@v2 as bit)

Не делайте так, если вы не хоитет, чтобы человек, который будет спровождать ваш код после вас, не караулил вас в темном переулке.

AdamAry
бац бац и в точку: ~
что делает оператор?: ~
Вас в msdn забанили?
...
Рейтинг: 0 / 0
13.07.2020, 15:21
    #39979040
AdamAry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно проверить на равенство без iif ?
AdamAry,

Код: sql
1.
select eqls = cast(@v1-@v2 as bit)



нет ли встроенного в tsql готового оператора сравнения?
...
Рейтинг: 0 / 0
13.07.2020, 15:23
    #39979041
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно проверить на равенство без iif ?
AdamAry,

есть, это знак "="
Код: sql
1.
2.
3.
4.
5.
6.
declare @eq bit = 0;
declare @n1 int = 5,
           @n2 int = 3;

select @eq = 1 where @n1 = @n2;
select @eq;



если хотите вот вам альтернатива в одну строку:
Код: sql
1.
select isnull(max(1), 0) where 1 = 2
...
Рейтинг: 0 / 0
13.07.2020, 15:31
    #39979052
godsql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно проверить на равенство без iif ?
операторов сравнения в tsql дофига, в т.ч. и '='
https://docs.microsoft.com/ru-ru/sql/t-sql/language-elements/comparison-operators-transact-sql?view=sql-server-ver15
...
Рейтинг: 0 / 0
14.07.2020, 07:23
    #39979277
AdamAry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно проверить на равенство без iif ?
felix_ff,

Вот это да:

Код: sql
1.
2.
3.
4.
5.
6.
declare @eq bit = 0;
declare @n1 int = 5,
           @n2 int = 3;

select @eq = 1 where @n1 = @n2;
select @eq;
...
Рейтинг: 0 / 0
14.07.2020, 07:31
    #39979279
AdamAry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно проверить на равенство без iif ?
felix_ff,
это работает:
Код: sql
1.
select isnull(max(1), 0) where 1 = 2


Объясните пожалуйста более подробно вот эту конструкцию:
Код: sql
1.
 isnull(max(1), 0)



Код: sql
1.
2.
declare @v1 int = 1, @v2 int = 1; --  @v2 int = 1;  
select isnull(max(1), 0) where @v1 = @v2;
...
Рейтинг: 0 / 0
14.07.2020, 09:05
    #39979290
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно проверить на равенство без iif ?
AdamAry
felix_ff,
это работает:
Код: sql
1.
select isnull(max(1), 0) where 1 = 2


Объясните пожалуйста более подробно вот эту конструкцию:
Код: sql
1.
 isnull(max(1), 0)




Это гарантирует, что "человек, который будет сопровождать ваш код после вас, не будет караулить вас в темном переулке."
Он туда не пойдет.
Побоится.
...
Рейтинг: 0 / 0
14.07.2020, 13:27
    #39979440
AdamAry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно проверить на равенство без iif ?
aleks222,
Код: sql
1.
2.
declare @v1 int = 1, @v2 int = 1; --  @v2 int = 1;  
select isnull(max(1), 0) where @v1 = @v2;



Код: sql
1.
2.
select max(1) where 1 = 2 -- null
select max(1) where 1 = 1 -- 1



Код: sql
1.
select isnull(max(1), 0) where 1 = 2;



Код: sql
1.
2.
3.
4.
select 1 where 1 = 2 -- nothing
select 1 where 1 = 1 -- 1

select isnull(1, 0) where 1 = 2 -- -- nothing
...
Рейтинг: 0 / 0
14.07.2020, 13:57
    #39979464
AdamAry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно проверить на равенство без iif ?
Код: sql
1.
2.
select max(1) where 1 = 2 -- null
select max(1) where 1 = 1 -- 1


Код: sql
1.
max(1)

всегда возвращает значение, даже когда
Код: sql
1.
where 1 = 2

оно возвращает null.

А просто 1 ничего не возвращает при
Код: sql
1.
where 1 = 2

поэтому для isnull не подходит
...
Рейтинг: 0 / 0
14.07.2020, 14:40
    #39979493
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно проверить на равенство без iif ?
AdamAry, какой-то трэш...
Что хотите сделать-то?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как можно проверить на равенство без iif ? / 24 сообщений из 24, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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