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
운영게시판
최근게시물
MS-SQL Q&A 6356 게시물 읽기
No. 6356
or 연산을 지원하는 집계함수가 필요합니다.
작성자
조중규(biosensor)
작성일
2012-04-04 02:03ⓒ
2012-04-04 02:11ⓜ
조회수
9,327

CREATE TABLE #TMP_STR
(
   [type] char(5) NOT NULL
)

INSERT INTO #TMP_STR VALUES ('100000')
INSERT INTO #TMP_STR VALUES ('010000')
INSERT INTO #TMP_STR VALUES ('010000')
INSERT INTO #TMP_STR VALUES ('100000')
INSERT INTO #TMP_STR VALUES ('000100')
INSERT INTO #TMP_STR VALUES ('001000')
INSERT INTO #TMP_STR VALUES ('100000')

 

SELECT ORFUNC([type]) AS or_operation
 FROM #TMP_STR

-- 임의의 ORFUNC 함수를 통해 OR연산결과물 '111100'을 구하고 싶습니다. ㅠㅠ type 컬럼이 char가 아닌 int라도 무관할듯 합니다.

 

DROP TABLE #TMP_STR

 

위와 같은 기능을 하는 집계함수를 구할수 있을까요?? 이게 지금 가장 큰 걸림돌이 되고 있습니다.

도와주세요.. 엔진은 SQL Server 2005입니다.

이 글에 대한 댓글이 총 3건 있습니다.

앞부분이 0으로 채워지게만 들어올수도 있으니 int는 안될것 같은데

결과물 앞에도 0이 없어도 되나요?

향지(jumdol625)님이 2012-04-04 09:59에 작성한 댓글입니다.

 설계 단계시라면 각 flag를 bit type으로 선언하시는 것을 추천드립니다.

그러면 SQL이 내부적으로 8개 단위로 1byte를 차지하도록 data를 처리하게 됩니다.

bit 형식에는 1과 0을 직접 저장하시면 됩니다.

 

 

앞 생략

, readable bit not null default 1

, writable  bit not null default 0

, exeutable bit not null default 0

뒤 생략

 

와 같이 table이 만들어 졌다면 여러 행에 대한

OR는 MAX(컬럼)로

AND는 MIN(컬럼)으로

XOR은 SUM( 컬럼 ) %2

과 같이 구현하실 수 있고

각 컬럼의 NOT은 -1로 구현하실 수 있습니다.

(bit의 경우 0-1 = 1이고 1-1 = 0이므로)

 

또한 나뉘어진 컬럼을 int로 묶는 경우에는 

readable * 4 + writable * 2 + executable

로 정수형으로 합치시거나

CAST( readable  AS CHAR(1) ) + CAST( writable AS CHAR(1) ) + CAST( execuable  AS CHAR(1) ) 

식으로 고쳐서 사용하실 수 있습니다.

 

 

우욱님이 2012-04-04 14:48에 작성한 댓글입니다. Edit

답변 달아주신 2분께 감사의 말씀드립니다.

 

특히 컬럼을 분리해서 MAX처리하도록 생각의 방향을 전환하도록 도와주신 우욱님께 큰 감사의 말씀을 드리고 싶습니다.

조중규(biosensor)님이 2012-04-04 17:03에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
6359필드의 크기 [1]
궁금이
2012-04-06
6622
6358데이터타입 변경 (varchar -> text) 에 대해서 [1]
js
2012-04-06
7283
6357소유자 dbo와 db_owner 차이점에 대해 문의합니다 [1]
초보자
2012-04-04
9417
6356or 연산을 지원하는 집계함수가 필요합니다. [3]
조중규
2012-04-04
9327
6355쿼리문을 짜야되는데요 좋은 방법있는지 부탁드려요 [3]
난해해
2012-04-03
7897
6354sql2008에서 이미지 화일 db에 저장하는 방법 sql문부탁
김길동
2012-04-01
7032
6353반각문자들로 구성된 데이터 사이에 전각문자가 존재할 경우 추출 [2]
김종문
2012-03-29
10577
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다