database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 41737 게시물 읽기
No. 41737
숫자 값 찾기
작성자
김을동
작성일
2019-06-26 10:48:18ⓒ
2019-06-26 11:18:43ⓜ
조회수
184

 안녕하세요. 

아래와 같이 1을 포함한 2배수? 값이 있습니다.

- -  1, 2, 4, 8, 16, 32, 64, 128


그중 입력값이 17 일경우 위 값의 합으로 17을 구하는 값을 전부 구하고 싶습니다.

예)

입력값 17 : 1 + 16

입력값  31 : 1 + 2 + 4 + 16 

입력값  32 : 32

입력값 60 : 4 + 8 + 16 + 32

함수로 만들려고 하는데 쉽지 않네요.. 고수님들 도움 부탁드립니다.

 

 

 

 

이 글에 대한 댓글이 총 4건 있습니다.
SELECT BITAND(X.INPUT_VALUE, Y.BIT_VALUE) RESULT_VALUE
  FROM (SELECT 31 INPUT_VALUE FROM DUAL) X, 
       (SELECT POWER(2,LEVEL-1) BIT_VALUE FROM DUAL CONNECT BY LEVEL <= 10) Y -- 구하고자 하는 수의 크기만큼 레벨 조정 필요
 WHERE (X.INPUT_VALUE >= Y.BIT_VALUE) 
   AND BITAND(X.INPUT_VALUE, Y.BIT_VALUE) > 0
구헌수(madcat)님이 2019-06-26 11:21:07에 작성한 댓글입니다.

오~~~

감사합니다. 꾸벅.

유용하게 사용하겠습니다.

좋은 하루 보내세요...

김을동님이 2019-06-26 12:51:12에 작성한 댓글입니다. Edit

SELECT x
     , POWER(2, LEVEL - 1) y
  FROM (SELECT 31 x FROM dual)
 WHERE BITAND(x, POWER(2, LEVEL - 1)) > 0
 CONNECT BY POWER(2, LEVEL - 1) <= x
;

마농(manon94)님이 2019-06-26 13:12:11에 작성한 댓글입니다.

오로..

구헌수님, 마농님 감사합니다.

둘다 좋네요... 잘 사용하겠습니다.

 

김을동님이 2019-06-26 13:34:54에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
41740컬럼, 테이블 존재 여부 확인 후 생성
김정식
2019-07-03
114
41739alter session 권한제거 [2]
나경민
2019-06-27
158
41738[질문]특정날짜의 이후의 것만 표시하려면? [5]
신승익
2019-06-26
182
41737숫자 값 찾기 [4]
김을동
2019-06-26
184
41736ORACLE 적재속도문제 [1]
DB
2019-06-25
167
41735컬럼명과 테이블명을 어디서 정의해주나요? [2]
신승익
2019-06-21
174
41733gv$session 에서 sql_id가 null 인애들 찾기
나경민
2019-06-19
130
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2019 DSN, All rights reserved.
작업시간: 0.068초, 이곳 서비스는
	PostgreSQL v11.3으로 자료를 관리합니다