Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle bitand функция

В двоичен код "set" означава "има стойност 1". „Не е зададено“ означава „има стойност 0“.

От документите на Oracle за BITAND:

"Резултатът се изчислява на няколко стъпки. Първо, всеки аргумент A се заменя със стойността SIGN(A)*FLOOR(ABS(A)). Това преобразуване има ефект на съкращаване на всеки аргумент към нула. След това всеки аргумент A (който трябва сега е цяло число) се преобразува в n-битова двоична целочислена стойност, допълваща две. Двете битови стойности се комбинират с помощта на побитова операция И. Накрая, получената n-битова допълнителна стойност на две се преобразува обратно в ЧИСЛО."

Казано по-просто, тази функция съкращава своите аргументи, преобразува ги в двоично число (в момента ограничено до 128 бита), И събира двете двоични числа заедно и връща резултата от преобразуването на двоичното число обратно в ЧИСЛО.

Ето резултата от всички възможни комбинации от нула и едно:

SELECT BITAND(0, 0) AS "0, 0",  -- i.e. 0 AND 0 = 0
       BITAND(0, 1) AS "0, 1",  -- i.e. 0 AND 1 = 0
       BITAND(1, 0) AS "1, 0",  -- i.e. 1 AND 0 = 0
       BITAND(1, 1) AS "1, 1"   -- i.e. 1 AND 1 = 1
  FROM DUAL;

По-сложен пример би бил ANDing заедно 11 и 5. В двоичен код 11 десетичен знак става "1011". 5 десетична става двоична "0101". Ако И тези стойности заедно, както в

1 0 1 1
0 1 0 1
-------
0 0 0 1

получавате 1 двоичен код, който все още е 1, когато се преобразува обратно в десетичен.

Споделяйте и се наслаждавайте.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо Oracle добавя скрита колона тук?

  2. PLSQL CASE WHEN УСЛОВИЕ

  3. Как да избера всички колони от таблица, плюс допълнителни колони като ROWNUM?

  4. .NET Core 2 + System.Data.OracleClient. Китайските йероглифи не работят

  5. Получаване на последния ден от предишния месец във функцията на Oracle