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

case и exists?
...
Рейтинг: 0 / 0
Как можно проверить на равенство без iif ?
    #39978872
AdamAry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
godsql,
авторcase и exists
с примерами и поподробней можно?
...
Рейтинг: 0 / 0
Как можно проверить на равенство без iif ?
    #39978886
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Как можно проверить на равенство без iif ?
    #39978897
godsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
Как можно проверить на равенство без iif ?
    #39978915
AdamAry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Как можно проверить на равенство без iif ?
    #39978917
AdamAry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
godsql,

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



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





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

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

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


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

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


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

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

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

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



нет ли встроенного в tsql готового оператора сравнения?
...
Рейтинг: 0 / 0
Как можно проверить на равенство без iif ?
    #39979041
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Как можно проверить на равенство без iif ?
    #39979052
godsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
операторов сравнения в tsql дофига, в т.ч. и '='
https://docs.microsoft.com/ru-ru/sql/t-sql/language-elements/comparison-operators-transact-sql?view=sql-server-ver15
...
Рейтинг: 0 / 0
Как можно проверить на равенство без iif ?
    #39979277
AdamAry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Как можно проверить на равенство без iif ?
    #39979279
AdamAry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Как можно проверить на равенство без iif ?
    #39979290
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AdamAry
felix_ff,
это работает:
Код: sql
1.
select isnull(max(1), 0) where 1 = 2


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




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


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