2017-12-11 8 views
-1

다음과 같이 (오라클) 텍스트 필드가 있습니다. 관련 사용자 코드, 날짜 및 시간과 주석이 포함 된 티켓의 요약 로깅 정보입니다. 보시다시피이 필드에는 날짜가 있지만 문자열로 표시됩니다. 이 경우 '2015-09-07'의 마지막 날짜 형식을 찾으려고합니다. 또는 코멘트가 'Ticket Fixed'또는 'Ticket Closed'인 날짜를 찾아 낼 수 있다면 더 좋습니다.SQL : 마지막 형식 발생

{ABC, 2015-08-31 10:27}: Ticket Issued 151553 
{ANN, 2015-09-07 13:34}: Assigned to user 'FAR' 
{MJJ, 2015-09-07 13:37}: Comments added 
{MFR, 2015-09-07 13:37}: Ticket fixed 

SUBSTR을 사용하려고했으나 마지막 코멘트의 내용/길이가 변경 될 수 있으므로 작동하지 않습니다.

Oracle 데이터베이스 사용.

답변

0

SQL Fiddle

오라클 11g R2 스키마 설정 : 1

CREATE TABLE tickets(details) AS 
SELECT '{ABC, 2015-08-31 10:27}: Ticket Issued 151553' FROM DUAL UNION ALL 
SELECT '{ANN, 2015-09-07 13:34}: Assigned to user ''FAR''' FROM DUAL UNION ALL 
SELECT '{MJJ, 2015-09-07 13:37}: Comments added' FROM DUAL UNION ALL 
SELECT '{MFR, 2015-09-07 13:37}: Ticket fixed' FROM DUAL; 

검색어 :

SELECT * 
FROM (
    SELECT SUBSTR(details, 2,3) AS id, 
     TO_DATE(SUBSTR(details, 7,16), 'YYYY-MM-DD HH24:MI') AS time, 
     SUBSTR(details, 26) AS ticket_comment 
    FROM tickets 
) 
WHERE ticket_comment IN ('Ticket fixed', 'Ticket Closed') 

Results :

| ID |     TIME | TICKET_COMMENT | 
|-----|----------------------|----------------| 
| MFR | 2015-09-07T13:37:00Z | Ticket fixed |