DB에서 비트 연산을 하고 싶습니다
CMS/프레임워크 | Rhymix 1.9 |
---|---|
개발 언어 | PHP 7.4 |
라이믹스 XML SQL 쿼리에서 비트연산을 하고 싶습니다
SELECT b'1000' & b'1111';
리턴 값: 8 (b'1000')
데이터 뽑아올때 쿼리상에서 비트 연산을 거치려고 하는데요, 개발자 문서를 봐도 비트 연산에 ㅂ도 안나와있어서..
일단 그냥 & 기호만 쓸 수 있으면 됩니다 (AND 연산)
이는 어떻게 구현할 수 있을까요?
+) 만약 기능이 없다면, 커스텀 쿼리말고는 답이 없는걸까요?
만약 커스텀 쿼리를 사용해야 한다면 라이믹스 2 말고, 라이믹스 1에서도 사용할 수 있는 방법이 있을까요?
라이믹스 2에서 대폭 개편되서 버전에 따라 코드를 다르게 짜야하는 것은 인지하고 있지만, 글마다 쿼리를 날리는 법이 달라서 헷갈리네요..

리버스
Lv. 7
모듈만드는 대학생입니다.
https://potatosoft.kr
https://potatosoft.kr
댓글 6
1. 비트연산 결과를 기준으로 데이터를 검색해서 가져오기 위해?
→ 인덱스를 타지 않으므로 무척 느립니다.
2. 검색 용도는 아니고, 가져온 데이터를 가공하기 위해?
→ PHP에서 하면 됩니다.
체크박스 데이터랑 비슷한 방식인데요, 예를 들어 전체적으로 [A,B,C]라는 데이터가 있으면 [A,C]만 선택한 경우를 가져오려고 합니다
이를 varchar로 저장하면 가장 간단하지만 검색이 쉽지 않아서, int로 저장하고 비트연산을 통해 해당 경우를 가져오려고 합니다
따로 컬럼으로 분류할까도 생각해봤지만 위 예시처럼 조건이 [A,B,C] 단 세개만 있는게 아니라서 말이죠..
앞으로도 추가가 될 수 있어서 다른 데이터 저장 방식도 생각해보았지만, 위 방식만큼 간단한 방법이 없네요 ㅜㅜ..
검색 편의나 쿼리 속도면에서 차이는 없을 것 같습니다. 둘 다 테이블 스캔이 필요하지요.
비트 연산이 좀 더 처리하기 수월해서 해당 방법으로만 생각했었는데, varchar를 사용해서 저장해도 큰 문제는 없어보이네요
오히려 경우에 따라 인덱스를 사용할 수도 있으니 더 좋을지도 모르겠네요
말씀해주신 varchar를 이용하여 저장하는 방법으로 가보겠습니다
감사합니다!
아예 테이블을 하나 새로 만드셔서 다루는 방법도 있습니다.
(id) (value)
abc opt1
abc opt3
abc opt4 형태로요.
기존 방식대로면
(id) (value)
abc 1011 과 같은 형태였겠죠..?
데이터가 확 늘어나긴 하겠지만, 인덱스도 깔끔하게 처리가 되지 않을까 싶습니다.
추후 확장하기도 편할거 같구요.