테스트 사이트 - 개발 중인 베타 버전입니다

mysql에서 쿼리 질문입니다. 채택완료

다위 2년 전 조회 2,261

테이블 s_log 에는 항목이 no, log_date 가 있습니다.

no = 1

log_date에는 |을 구분자로 사용하여 기간|시작일| 종료일 이런식으로 데이터가 들어갑니다.

그리고 개행문자(\n)도 포함되어 있습니다.

즉, log_date에는

30|2022-11-01 10:10:00|2022-11-05 12:00:00

40|2022-11-07 10:10:00|2022-11-10 12:00:00

60|2022-11-15 10:10:00|2022-11-23 12:00:00

 

이런식으로 들어갑니다. 

s_log테이블에서 40에 해당하는 2022-11-07 10:10:00와 2022-11-10 12:00:00 를 가져오려면 sql문을 어떻게 해야 할까요?

 

 

 

 

댓글을 작성하려면 로그인이 필요합니다.

답변 5개

채택된 답변
+20 포인트
지아부
2년 전

이런거 말씀하시는거 맞나모르겠네요

 

SELECT

substring,

SUBSTRING_INDEX(substring, '|', 1) as day1,

SUBSTRING_INDEX(SUBSTRING_INDEX(substring, '|', -2),'|', 1) as day2

FROM

(SELECT REPLACE(REGEXP_SUBSTR ('30|2022-11-01 10:10:00|2022-11-05 12:00:00

40|2022-11-07 10:10:00|2022-11-10 12:00:00

60|2022-11-15 10:10:00|2022-11-23 12:00:00', '40\\|([^\r\n]+)'), '40|', '') AS substring) A

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

2년 전
no log_date
1

30|2022-11-01 10:10:00|2022-11-05 12:00:00

40|2022-11-07 10:10:00|2022-11-10 12:00:00

60|2022-11-15 10:10:00|2022-11-23 12:00:00

이렇게 되어있을때 40에 해당하는 2022-11-07 10:10:00와 2022-11-10 12:00:00 를 가져오는 쿼리가 가능할까요?

가능하지 않을 것 같기도 하고....

php 코드로 해야 할것 같습니다. 

답변주신분들 고맙습니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

엑스엠엘
2년 전
select * from s_log where instr( log_date, '\n40|')
엑스엠엘
2년 전
이런 조건의 검색이 자주 필요하다면
컬럼을 분리하시는 것이 좋을 듯합니다.

댓글을 작성하려면 로그인이 필요합니다.

n
2년 전

추가 피해자 방지 https://sir.kr/conflictconsultation/245" rel="nofollow noreferrer noopener" target="_blank">https://sir.kr/conflictconsultation/245

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

유찬아빠

where substring(log_date,1,2)='40'

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

플래토
2년 전

문장전체를 보는경우 
단순하게
select * from s_log

where log_date = '40|2022-11-07 10:10:00|2022-11-10 12:00:00'

이렇게 해도 되지만

시간이 범위로 해당되는경우이거나 일부분만 일치하는것을 가져올때는

검색할 값을 변수로 관리하고

instr(컬럼, {$변수})

로 검색하시면됩니다.

</p>

<p><?php</p>

<p>$searchvar = "40|2022-11-07";  // 이 내용은 부분적으로 작성되도 like 검색과 같이 작동합니다.</p>

<p>$sql = "select * from s_log where instr(log_date, '{$searchvar}') ";</p>

<p> </p>

<p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인