powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / оператор XOR
23 сообщений из 23, страница 1 из 1
оператор XOR
    #39781698
Добрый день. Хочу в условии использовать оператор XOR, ругается "Incorrect syntax near 'XOR'." Меняю его на AND или OR - все работает. Может здесь что-то с версией не-то?
...
Рейтинг: 0 / 0
оператор XOR
    #39781705
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гасанов ЭльнурХочу в условии использовать оператор XOR, ругается "Incorrect syntax near 'XOR'." Меняю его на AND или OR - все работаетНет такого. А AND и OR есть

XOR в сиквеле пишется как |
...
Рейтинг: 0 / 0
оператор XOR
    #39781706
Tactical Nuclear Penguin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
^
...
Рейтинг: 0 / 0
оператор XOR
    #39781708
К сожалению и | и ^ не работает.
...
Рейтинг: 0 / 0
оператор XOR
    #39781712
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гасанов ЭльнурК сожалению и | и ^ не работает.Репро?

Код: sql
1.
2.
3.
select 6 | 1
------------
7
...
Рейтинг: 0 / 0
оператор XOR
    #39781717
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgXOR в сиквеле пишется как |Да, перепутал с OR
Конечно, ^

Код: sql
1.
2.
3.
select 6 | 3, 6 ^ 3
(No column name)	(No column name)
7	                        5
...
Рейтинг: 0 / 0
оператор XOR
    #39781725
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgalexeyvgXOR в сиквеле пишется как |Да, перепутал с OR
Конечно, ^

Код: sql
1.
2.
3.
select 6 | 3, 6 ^ 3
(No column name)	(No column name)
7	                        5



Вангую, страдалец жаждет XOR в where.

Он плохо учил булеву алгебру в школе.
...
Рейтинг: 0 / 0
оператор XOR
    #39781726
Да так работает. В WHERE не работает((((((((((((((((
...
Рейтинг: 0 / 0
оператор XOR
    #39781727
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гасанов ЭльнурДа так работает. В WHERE не работает((((((((((((((((
логический XOR выражопывается через OR и AND.

Лехко

A xor B

эквивалентно

( A or B ) and not ( A and B )
...
Рейтинг: 0 / 0
оператор XOR
    #39781734
aleks222, Спасибо!
...
Рейтинг: 0 / 0
оператор XOR
    #39781800
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гасанов ЭльнурДа так работает. В WHERE не работает((((((((((((((((Как вы пишете условие в WHERE с оператором ^ ?
Как не работает-то?
...
Рейтинг: 0 / 0
оператор XOR
    #39781805
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гасанов Эльнур,

в выражении A^B каждый бит в A сравнивается с соответствующим битом в B,
и если биты равны, в результате этот бит будет равен 0, а если биты разные, то в результате он будет равен 1.
Этот результат не имеет тип BOOLEAN, который нужен в WHERE. Сравнить ещё надо с чем-то.
...
Рейтинг: 0 / 0
оператор XOR
    #39782027
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapв выражении A^B каждый бит в A сравнивается с соответствующим битом в B,
и если биты равны, в результате этот бит будет равен 0, а если биты разные, то в результате он будет равен 1.
Этот результат не имеет тип BOOLEAN, который нужен в WHERE.Да, но ТС, оказывается, нужен логический XOR
То есть TRUE XOR TRUE = FALSE, FALSE XOR FALSE = FALSE, TRUE XOR FALSE или FALSE XOR TRUE = TRUE

Такого действительно в сиквеле нет, нужно имитировать ( A or B ) and not ( A and B )
...
Рейтинг: 0 / 0
оператор XOR
    #39782061
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гасанов Эльнур,

какое действие над множествами должно произвести "исключающее или"? Здесь все-таки реляционная алгебра.
...
Рейтинг: 0 / 0
оператор XOR
    #39782101
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgТакого действительно в сиквеле нет, нужно имитировать ( A or B ) and not ( A and B )
если A и B достаточно громоздкие и точно не unknown, то можно использовать iif(A, 1, 0) <> iif(B, 1, 0)
...
Рейтинг: 0 / 0
оператор XOR
    #39782211
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shakillесли A и B достаточно громоздкиеГромоздкость можно убрать подзапросами. А iif появился в самых последних версиях, не всем он доступен, + ограничение на NULL.
...
Рейтинг: 0 / 0
оператор XOR
    #39782225
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гасанов Эльнур,
А XOR был нужен булевый или битовый?


Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT A, B, (A | B) & ~ (A & B) AS XOR FROM 
(
	SELECT 0 AS A, 0 AS B UNION ALL 
	SELECT 15, 0 UNION ALL 
	SELECT 15, 15 UNION ALL 
	SELECT 7, 8 
) A



A B XOR0 0 015 0 1515 15 07 8 15
...
Рейтинг: 0 / 0
оператор XOR
    #39782236
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgShakillесли A и B достаточно громоздкиеГромоздкость можно убрать подзапросами. А iif появился в самых последних версиях, не всем он доступен, + ограничение на NULL.+ нафиг он нужен, если есть стандартный CASE!
...
Рейтинг: 0 / 0
оператор XOR
    #39782427
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgShakillесли A и B достаточно громоздкиеГромоздкость можно убрать подзапросами. А iif появился в самых последних версиях, не всем он доступен, + ограничение на NULL.
в данном случае A и B - логические выражения; если их убирать в подзапросы и потом использовать, то сначала все равно придется приводить к bit с помощью тех же iif/case.

насчёт iif - просто потому что короче чем case, да и 2012 сервер уже не относится к самым последним версиям, кмк. хотя, конечно, авторы могли бы докрутить до конца и второй результат в iif сделать необязательным, по умолчанию чтоб как у case выдавался null
...
Рейтинг: 0 / 0
оператор XOR
    #39782896
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вчера понял, что был не прав. Реализацией XOR для запроса является выражение EXCEPT.
...
Рейтинг: 0 / 0
оператор XOR
    #39782954
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав КолосовВчера понял, что был не прав. Реализацией XOR для запроса является выражение EXCEPT.
...
Рейтинг: 0 / 0
оператор XOR
    #39782959
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLexВладислав КолосовВчера понял, что был не прав. Реализацией XOR для запроса является выражение EXCEPT.

Отправилось раньше времени :(


EXCEPT - это "полуXOR"

для полноценного XOR нужны два EXCEPT через union all
...
Рейтинг: 0 / 0
оператор XOR
    #39782986
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex,

да, с "переворотом". Но сам принцип.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / оператор XOR
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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