데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
특정 필드의 긴문자열을 여러 로우로 분리하기 질문입니다.
SMS 보내는데 MMS로 보내수가 없는 환경입니다.
80바이트가 넘으면 여러 문자로 보내달라고 하네요.
보낼 문자를 콘솔이나 배치파일로 불러들여서 C#에서 처리하면 되겠지만
먼저 쿼리로 할 수 있나 궁금해서 아시는분들께 질문 드립니다.
as ( select '특정 필드의 긴문자열을 여러 로우로 분리하기 질문입니다.
SMS 보내는데 MMS로 보내수가 없는 환경입니다.
80바이트가 넘으면 여러 문자로 보내달라고 하네요. ' mms_txt )
select DATALENGTH(a.mms_txt) [byte], len(a.mms_txt) [글자수], CEILING(DATALENGTH(a.mms_txt) / 80.) , CEILING (len(mms_txt) / CEILING(DATALENGTH(mms_txt) / 80.)) , no
, no * CEILING (len(mms_txt) / CEILING(DATALENGTH(mms_txt) / 80.)) + 1 s_no
, (no + 1) * CEILING (len(mms_txt) / CEILING(DATALENGTH(mms_txt) / 80.)) e_no
, SUBSTRING(mms_txt , no * CEILING (len(mms_txt) / CEILING(DATALENGTH(mms_txt) / 80.)) + 1 , (no + 1) * CEILING (len(mms_txt) / CEILING(DATALENGTH(mms_txt) / 80.)) )
from res a
cross apply
( select number no
from master.dbo.spt_values
where type = 'P'
and number < CEILING(DATALENGTH(mms_txt) / 80.) ) as B