편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2020.06.05

    MSSQL 문자열 파싱에 조건절을 추가할 수 있나요?


    SELECT 
        D.dev_serial,
        D.dev_name,
        dbo.funcSplit(dbo.funcSplit(D.dev_name, N'_', 3), N' ', 1)as location
    FROM cheonan01.[vms_device] D
    

    코드는 위와 같으며 dbo.funcSplit(D.dev_name, N'_', 3) 의 뜻은 문자열(D.dev_name)이 들어가면 지정문자열(N'_')을 기준으로 split 했을 때 3번 째의 요소를 반환하라는 함수입니다.

    위처럼 문자열을 파싱해서 location이란 컬럼에 적용하는데 대부분 문자열의 형태가 'W18C064-15_1_성환읍 송덕리 173-26(배주산지)_PTZ' 이런식이라 함수에 반환 되는 값이 '성환읍' 이렇게 깔끔하게 떨어집니다. 그런데 간혹 'W28C015-12_3_[SC-36]불당동 492-3(상공회의소 입구 삼거리_요진와이시티방향)'이런식으로 저장 되어 있는 컬럼이 몇 개 있어서 location컬럼에 '[SC-36]불당동'와 같이 저장 되더라구요.

    모든 컬럼을 제대로 파싱해서 location에 넣어야하는데 이럴 때에는 어떤식으로 해야하나요?

  • 프로필 김재민님의 편집
    날짜2020.06.04

    MSSQL 문자열 파싱에 조건절을 추가할 수 있나요?


    SELECT 
        D.dev_serial,
        D.dev_name,
        dbo.funcSplit(dbo.funcSplit(D.dev_name, N'_', 3), N' ', 1)as location
    FROM cheonan01.[vms_device] D
    
    코드는 위와 같으며
    dbo.funcSplit(D.dev_name, N'_', 3) 의 뜻은 문자열(D.dev_name)이 들어가면
    지정문자열(N'_')을 기준으로 split 했을 때 3번 째의 요소를 반환하라는 함수입니다.
    

    위처럼 문자열을 파싱해서 location이란 컬럼에 적용하는데 대부분 문자열의 형태가 'W18C064-15_1_성환읍 송덕리 173-26(배주산지)PTZ' 이런식이라 함수에 반환 되는 값이 '성환읍' 이렇게 깔끔하게 떨어집니다. 그런데 간혹 'W28C015-12_3[SC-36]불당동 492-3(상공회의소 입구 삼거리_요진와이시티방향)'이런식으로 저장 되어 있는 컬럼이 몇 개 있어서 location컬럼에 '[SC-36]불당동'와 같이 저장 되더라구요.

    모든 컬럼을 제대로 파싱해서 location에 넣어야하는데 이럴 때에는 어떤식으로 해야하나요?