티스토리 뷰

반응형

SELECT 
  IF(SUBSTRING_INDEX(SUBSTRING_INDEX(work_size_des, '[', 2), ']', -1) = '',
    SUBSTRING_INDEX(SUBSTRING_INDEX(work_size_des, '[', -2), ']', 1),
    SUBSTRING_INDEX(SUBSTRING_INDEX(work_size_des, '[', 1), ']', -1)) AS work_spec_mat,
  IF(SUBSTRING_INDEX(SUBSTRING_INDEX(work_size_des, '[', 2), ']', -1) = '',
    SUBSTRING_INDEX(SUBSTRING_INDEX(work_size_des, '[', -1), ']', 1),
    SUBSTRING_INDEX(SUBSTRING_INDEX(work_size_des, '[', -2), ']', -1)) AS work_spec_thick,
  IF(SUBSTRING_INDEX(SUBSTRING_INDEX(work_size_des, '[', 2), ']', -1) = '',
    '',
    SUBSTRING_INDEX(SUBSTRING_INDEX(work_size_des, ']', -2), '[', 1)) AS work_spec_detail
FROM dbeunsungbiz.workgrid;

SELECT 
  CASE 
    WHEN SUBSTRING_INDEX(work_size_des, ']', 1) = SUBSTRING_INDEX(SUBSTRING_INDEX(work_size_des, '[', -2), ']', 1) THEN ''
    ELSE TRIM(TRAILING ']' FROM SUBSTRING_INDEX(SUBSTRING_INDEX(work_size_des, ']', 1), '[', -1))
  END AS work_spec_mat,
  CASE 
    WHEN SUBSTRING_INDEX(work_size_des, ']', 1) = SUBSTRING_INDEX(SUBSTRING_INDEX(work_size_des, '[', -2), ']', 1) THEN ''
    ELSE TRIM(TRAILING ']' FROM SUBSTRING_INDEX(SUBSTRING_INDEX(work_size_des, ']', -2), '[', -1))
  END AS work_spec_thick,
  CASE 
    WHEN SUBSTRING_INDEX(work_size_des, ']', 1) = SUBSTRING_INDEX(SUBSTRING_INDEX(work_size_des, '[', -2), ']', 1) THEN SUBSTRING_INDEX(SUBSTRING_INDEX(work_size_des, ']', 1), '[', -1)
    ELSE ''
  END AS work_spec_detail
FROM dbeunsungbiz.workgrid;

 

 

 

특정 부분만 추출해서 자료 수정할 경우 활용하는 방법 재질에서 3가지 추출할때 사용함.

 

CREATE TEMPORARY TABLE tmp_workgrid AS SELECT * FROM dbeunsungbiz.workgrid;

UPDATE dbeunsungbiz.workgrid
SET 
  work_spec_mat = (
    SELECT 
      CASE 
        WHEN SUBSTRING_INDEX(work_size_des, ']', 1) = SUBSTRING_INDEX(SUBSTRING_INDEX(work_size_des, '[', -2), ']', 1) THEN ''
        ELSE SUBSTRING_INDEX(SUBSTRING_INDEX(work_size_des, ']', 1), '[', -1)
      END
    FROM tmp_workgrid
    WHERE tmp_workgrid.id = dbeunsungbiz.workgrid.id
  ),
  work_spec_thick = (
    SELECT 
      CASE 
        WHEN SUBSTRING_INDEX(work_size_des, ']', 1) = SUBSTRING_INDEX(SUBSTRING_INDEX(work_size_des, '[', -2), ']', 1) THEN ''
        ELSE TRIM(REPLACE(SUBSTRING_INDEX(SUBSTRING_INDEX(work_size_des, ']', -2), '[', -1), ']', ''))
      END
    FROM tmp_workgrid
    WHERE tmp_workgrid.id = dbeunsungbiz.workgrid.id
  ),
  work_spec_detail = (
    SELECT 
      CASE 
        WHEN SUBSTRING_INDEX(work_size_des, ']', 1) = SUBSTRING_INDEX(SUBSTRING_INDEX(work_size_des, '[', -2), ']', 1) THEN SUBSTRING_INDEX(SUBSTRING_INDEX(work_size_des, ']', 1), '[', -1)
        ELSE ''
      END
    FROM tmp_workgrid
    WHERE tmp_workgrid.id = dbeunsungbiz.workgrid.id
  );

DROP TABLE tmp_workgrid;

반응형
댓글