Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 битовые поля в сумме и символ * ~  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1316
Добрый день.

SQL 2012
Microsoft SQL Server 2012 - 11.0.5548.0 (X64)
Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )


в чужой СП встеретили код :

SUM(F.M_Amount_USD_PaymentAmount * F.HasPaymentFlag * [b]~ [/b]F.PaidOnTimeFlag [b]* ~ [/b]F.CreditFlag) 


F.PaidOnTimeFlag , F.CreditFlag биты

не встречал до этого - в гогле чего то не могу найти по символу ~
тестовыми скл (на примере 1 строки )

вроде как это сумма по тем полям где битовые поля = 1
скорее всего логическое ИЛИ (OR)
23 июл 15, 17:01    [17926689]     Ответить | Цитировать Сообщить модератору
 Re: битовые поля в сумме и символ * ~  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1316
SELECT
  SUM(F.M_Amount_USD_PaymentAmount * F.HasPaymentFlag * ~ F.PaidOnTimeFlag * ~ F.CreditFlag) 


ps нельзя в коде болдом пометить : * ~
23 июл 15, 17:03    [17926699]     Ответить | Цитировать Сообщить модератору
 Re: битовые поля в сумме и символ * ~  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Гулин Федор,

~ - от битовый оператор НЕ.
Инвертирует биты операнда.
23 июл 15, 17:03    [17926702]     Ответить | Цитировать Сообщить модератору
 Re: битовые поля в сумме и символ * ~  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Звёздочка - знак умножения
23 июл 15, 17:04    [17926707]     Ответить | Цитировать Сообщить модератору
 Re: битовые поля в сумме и символ * ~  [new]
Oleksii Kovalov
Member

Откуда:
Сообщений: 100
с некоторых пор не люблю такие трюки в коде, препочитаю банальный case
23 июл 15, 23:49    [17927924]     Ответить | Цитировать Сообщить модератору
 Re: битовые поля в сумме и символ * ~  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31964
Oleksii Kovalov
с некоторых пор не люблю такие трюки в коде, препочитаю банальный case
Ну какой тут трюк, "суммировать, если поля F.PaidOnTimeFlag и F.CreditFlag равны 0"...
24 июл 15, 01:56    [17928131]     Ответить | Цитировать Сообщить модератору
 Re: битовые поля в сумме и символ * ~  [new]
msLex
Member

Откуда:
Сообщений: 9289
Гулин Федор
SELECT
  SUM(F.M_Amount_USD_PaymentAmount * F.HasPaymentFlag * ~ F.PaidOnTimeFlag * ~ F.CreditFlag) 


ps нельзя в коде болдом пометить : * ~


офтопик

можно выделять куски кода
24 июл 15, 12:03    [17929361]     Ответить | Цитировать Сообщить модератору
 Re: битовые поля в сумме и символ * ~  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8816
Зачем искать в гугле, когда это все есть в справке.

Справка загружается с сайта MS.
24 июл 15, 13:00    [17929660]     Ответить | Цитировать Сообщить модератору
 Re: битовые поля в сумме и символ * ~  [new]
o-o
Guest
потому что надо знать, на что искать.
в гугле в том числе.
называется это Bitwise Operators (Transact-SQL).
ну или конкретно ~ (Bitwise NOT) (Transact-SQL)
24 июл 15, 13:09    [17929704]     Ответить | Цитировать Сообщить модератору
 Re: битовые поля в сумме и символ * ~  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1316
o-o
потому что надо знать, на что искать.
в гугле в том числе.
называется это Bitwise Operators (Transact-SQL).
ну или конкретно ~ (Bitwise NOT) (Transact-SQL)


Золотые слова !!
Всем СПС

зы давно я С изучал помню что & , | битовые и или а вот НЕ не использовал - может поэтому и не догадался
24 июл 15, 15:20    [17930694]     Ответить | Цитировать Сообщить модератору
 Re: битовые поля в сумме и символ * ~  [new]
Oleksii Kovalov
Member

Откуда:
Сообщений: 100
alexeyvg
Oleksii Kovalov
с некоторых пор не люблю такие трюки в коде, препочитаю банальный case
Ну какой тут трюк, "суммировать, если поля F.PaidOnTimeFlag и F.CreditFlag равны 0"...

Функциональная зависимость от значение поля
не очень хорошо
старый добрый кейс и понятен сразу, и легко расширяем
и потенциально ошибок меньше

зы да, я заметил, что поле - битовое
а что будет если такой же подход кто-то применит к инту ? что даёт ~1?
24 июл 15, 21:00    [17932347]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить