MSSQL에서는 쉽게 bigint 값을 바이너리 변환하여 해당 비트값을 알아오기 쉬웠던것 같은데. ㅋ
그래도 Mysql에서 역시 해당 함수를 이용해서 가볍게 알아 올수 있어서 참 다행입니다.
1. 32비트의 값중에서 해당 비트 만큼 사용할경우.
4비트 + 8비트 + 4비트 + 4비트 + 4비트 + 8비트
(해당값) 1,4,1,1,1,1
2. 32비트 값을 integer 로 변한된 값 : 272699649
3. 일반 쿼리로 변환하여 해당 값알아오기
SELECT ((272699649) & POW(2,32)-POW(2,28)) >> 28 ;
SELECT ((272699649) & POW(2,28)-POW(2,20)) >> 20 ;
SELECT ((272699649) & POW(2,20)-POW(2,16)) >> 16 ;
SELECT ((272699649) & POW(2,16)-POW(2,12)) >> 12 ;
SELECT ((272699649) & POW(2,12)-POW(2,8)) >> 8 ;
SELECT ((272699649) & POW(2,8)-POW(2,0)) >> 0 ;
4. 함수를 생성하여 해당 함수를 이용하여 값을 동적으로 알아오기
SELECT f_wBitOneMust_run(272699649,32,28);
SELECT f_wBitOneMust_run(272699649,28,20);
SELECT f_wBitOneMust_run(272699649,20,16);
DELIMITER $$
USE `DB_NAME`$$
DROP FUNCTION IF EXISTS `f_bitConvertPow`$$
CREATE FUNCTION `f_bitConvertPow`(
bitVal BIGINT,bitCnt1 INT,bitCnt2 INT
) RETURNS VARCHAR(100) CHARSET euckr
READS SQL DATA
COMMENT '비트값중 해당 자리에 값 추출'
BEGIN
DECLARE s_return VARCHAR(100) DEFAULT '';
IF bitVal>0 THEN
SET s_return = ((bitVal) & POW(2,bitCnt1)-POW(2,bitCnt2)) >> bitCnt2 ;
END IF;
RETURN s_return;
END$$
DELIMITER ;